java.lang.ClassCastException При запуске деятельности в приложении - PullRequest
1 голос
/ 11 марта 2012

Создание простого приложения базы данных, в котором хранятся продукты питания с указанием срока годности.Возникли проблемы с настройкой базы данных, я, наконец, думаю, что я отсортировал ее.И затем я замечаю, что приложение вылетает при запуске действия, используемого для добавления элементов.

Вот Logcat:

03-11 09: 37: 00.406: E / AndroidRuntime (410): FATAL EXCEPTION: main 03-11 09: 37: 00.406: E / AndroidRuntime (410): java.lang.RuntimeException: невозможно запустить действие ComponentInfo {grocery.a2.app/grocery.a2.app.AddItems}: java.lang.ClassCastException: grocery.a2.app.AddItems 03-11 09: 37: 00.406: E / AndroidRuntime (410): на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:1647) 03-11 09: 37: 00.406: E / AndroidRuntime (410): на android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:1663) 03-11 09: 37: 00.406: E / AndroidRuntime (410): на android.app.ActivityThread.access $ 1500 (ActivityThread.java: 117) 03-11 09: 37: 00.406: E / AndroidRuntime (410): at android.app.ActivityThread $ H.handleMessage (ActivityThread.java:931) 03-11 09: 37: 00.406: E / AndroidRuntime(410): на android.os.Handler.dispatchMessage (Handler.java:99) 03-11 09: 37: 00.406: E / AndroidRuntime (410): на android.os.Looper.loop (Looper.java:123) 03-11 09: 37: 00.406: E / AndroidRuntime (410): на android.app.ActivityThread.main (ActivityThread.java:3683) 03-11 09: 37: 00.406: E / AndroidRuntime (410): в java.lang.reflect.Method.invokeNative (собственный метод) 03-11 09: 37: 00.406: E / AndroidRuntime (410): в java.lang.refle.Method.invoke (Method.java:507) 03-11 09: 37: 00.406: E / AndroidRuntime (410): в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:839) 03-11 09: 37: 00.406: E / AndroidRuntime (410): на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:597) 03-11 09: 37: 00.406: E / AndroidRuntime (410):at dalvik.system.NativeStart.main (собственный метод) 03-11 09: 37: 00.406: E / AndroidRuntime (410): вызвано: java.lang.ClassCastException: grocery.a2.app.AddItems 03-11 09:37: 00.406: E / AndroidRuntime (410): на grocery.a2.app.AddItems.onCreate (AddItems.java:28) 03-11 09: 37: 00.406: E / AndroidRuntime (410): на android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1047) 03-11 09: 37: 00.406: E / AndroidRuntime (410): на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:1611) 03-11 09: 37: 00.406: E / AndroidRuntime (410): ... еще 11

И код операции, которая не запускается:

public class AddItems extends Activity  {

    private EditText ItemName;
    private Long mRowId;

    Button btnAdd, btnView;
    EditText txtName, txtDate;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.addnewitem);

        btnAdd = (Button) findViewById(R.id.btnAdd);
        txtName = (EditText) findViewById(R.id.txtName);
        txtDate = (EditText) findViewById(R.id.txtDate);
        btnView = (Button) findViewById(R.id.btnScan);

        btnView.setOnClickListener((OnClickListener) this);
        btnAdd.setOnClickListener((OnClickListener) this);

        mRowId = null;

        Bundle extras = getIntent().getExtras();

        if (extras != null){
            String name = extras.getString(ItemDBAdapter.KEY_ITEMNAME);
            String date = extras.getString(ItemDBAdapter.KEY_ITEMEXP);
            mRowId = extras.getLong(ItemDBAdapter.KEY_ID);
            if (name != null){
                ItemName.setText(name);
            }
        }

        btnAdd.setOnClickListener(new OnClickListener(){
            public void onClick(View view) {
                Bundle bundle = new Bundle();
                bundle.putString(ItemDBAdapter.KEY_ITEMNAME,ItemName.getText().toString());
                if (mRowId != null){
                    bundle.putLong(ItemDBAdapter.KEY_ID, mRowId);
                }
                Intent mIntent = new Intent();
                mIntent.putExtras(bundle);
                setResult(RESULT_OK, mIntent);
                finish();
            }
        });
    }

И макет XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Item Name"
        android:textAppearance="?android:attr/textAppearanceMedium" 
        android:layout_marginTop="12dp" 
        android:textColor="#999999"
        />
        <requestFocus />

        <EditText
            android:id="@+id/txtName"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:inputType="textCapSentences" android:layout_marginTop="5dp"/>


    <Button
        android:id="@+id/btnScan"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="12dp"
        android:text="Scan Barcode"
        android:textColor="#000000" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Expiration Date"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:layout_marginTop="12dp"
        android:textColor="#999999"/>

    <EditText
        android:id="@+id/txtDate"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="date" />

    <Button
        android:id="@+id/btnAdd"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="Add Item"
        android:layout_marginTop="12dp"
        android:textColor="#000000"/>

    <Button
        android:id="@+id/btnBack"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|right"
        android:layout_marginRight="10dp"
        android:text="@string/back"/>"

</LinearLayout>

Любая помощь будет принята с благодарностью.

Ответы [ 5 ]

2 голосов
/ 11 марта 2012

Если вы хотите использовать это:

btnView.setOnClickListener((OnClickListener) this);
btnAdd.setOnClickListener((OnClickListener) this);

Ваша деятельность должна реализовывать OnclickListener

0 голосов
/ 12 марта 2012

Попробуйте это:

открытый класс AddItems расширяет Activity, реализует View.OnClickListener {

private EditText ItemName;
private Long mRowId;

Button btnAdd, btnView;
EditText txtName, txtDate;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.addnewitem);

    btnAdd = (Button) findViewById(R.id.btnAdd);
    txtName = (EditText) findViewById(R.id.txtName);
    txtDate = (EditText) findViewById(R.id.txtDate);
    btnView = (Button) findViewById(R.id.btnScan);

    btnView.setOnClickListener(this);
    btnAdd.setOnClickListener(this);

}

@Override 

public void onClick (Просмотреть представление) {

switch (view.getId()) {
  case R.id.btnAdd:
      //Do something
      break;

  case R.id.btnScan:
    //Do something
    break;
  }

}

}

0 голосов
/ 11 марта 2012

Может быть проблема в строках:

 btnView.setOnClickListener((OnClickListener) this);
 btnAdd.setOnClickListener((OnClickListener) this);

Поскольку вы уже реализовали OnClickListener для кнопки btnAdd:

 btnAdd.setOnClickListener(new OnClickListener(){
            public void onClick(View view) {
           ......
        });

Так что удалите 2 вышеупомянутые строкикод, и он будет работать для вас.

И если вы все еще хотите использовать этот 1-й метод, то ваша деятельность должна реализовывать OnClickListener.

0 голосов
/ 11 марта 2012

хорошо, я видел эту проблему несколько раз. Я добавил активность в манифест. ВЫ ДОБАВИЛИ ЭТО?

0 голосов
/ 11 марта 2012

Внимательное чтение вашего logcat говорит мне, что в строке 28 вашего класса активности вы пытаетесь брось что-нибудь во что бы то ни стало. Не считая строк, я бы предположил, что это было setOnClickListener (), и ваша деятельность не реализует правильный интерфейс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...