【问题标题】:java.lang.ClassCastException While starting activity in appjava.lang.ClassCastException 在应用程序中启动活动时
【发布时间】:2012-03-11 09:49:52
【问题描述】:

制作一个简单的数据库应用程序,用于存储食品及其有效期。 在设置数据库时遇到问题,我终于认为我已经对其进行了排序。然后我注意到应用程序在启动用于添加项目的活动时崩溃。

这是 Logcat:

03-11 09:37:00.406:E/AndroidRuntime(410):致命异常:主要 03-11 09:37:00.406: E/AndroidRuntime(410): java.lang.RuntimeException: 无法开始活动 组件信息{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): 在 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(Native Method) 03-11 09:37:00.406: E/AndroidRuntime(410): 在 java.lang.reflect.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): 在 dalvik.system.NativeStart.main(Native Method) 03-11 09:37:00.406: E/AndroidRuntime(410):引起:java.lang.ClassCastException: 杂货店.a2.app.AddItems 03-11 09:37:00.406: E/AndroidRuntime(410): at 杂货店.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 更多

以及启动失败的activity的代码:

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>

任何帮助将不胜感激。

【问题讨论】:

  • 你能发布布局 XML 吗?
  • 我已经在布局xml中添加了。

标签: java android sqlite


【解决方案1】:

如果你想使用这个:

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

您的活动必须实现 OnclickListener

【讨论】:

  • 啊,这就是问题所在。非常感谢您的帮助。
【解决方案2】:

仔细阅读您的 logcat 告诉我,您尝试在活动课程的第 28 行 将某些东西投射到它不是的东西上。不计算行数,我猜它是 setOnClickListener() ,并且您的活动没有实现正确的接口。

【讨论】:

    【解决方案3】:

    好的,我已经多次看到这个问题。我已经在清单中添加了活动。你添加了吗?

    【讨论】:

      【解决方案4】:

      线路可能有问题:

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

      因为您已经为按钮 btnAdd 实现了 OnClickListener:

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

      所以从代码中删除上面两行,它会为你工作。

      如果您仍想使用第一种方法,那么您的活动必须实现 OnClickListener。

      【讨论】:

        【解决方案5】:

        试试这个:

        公共类 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;
          }
        

        }

        }

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-07-31
          • 1970-01-01
          相关资源
          最近更新 更多