2012-03-11 36 views
1

製作一個簡單的數據庫應用程序,該應用程序存儲帶有過期日期的食物項目。 無法設置數據庫,我終於認爲我已經對它進行了排序。然後我在開始用於添加項目的活動時忽略應用程序崩潰。java.lang.ClassCastException當在應用程序中啓動活動時

這裏的logcat的:

03-11 09:37:00.406:E/AndroidRuntime(410):致命異常:主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):at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 03-11 09:37:00.406:E/AndroidRuntime(410):at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 03-11 09:37:00.406:E/AndroidRuntime(410):at 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) :at android.os.Handler.dispatchMessage(Handler.java:99)03-11 09:37:00.406:E/AndroidRuntime(410):at android.os.Looper.loop(Looper.java:123) 03-11 09:37:00.406: E/AndroidRuntime(410):at 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):at java.lang.reflect.Method.invoke(Method.java:507)03 -11 09:37:00.406: E/AndroidRuntime(410):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:839) 03-11 09:37:00.406:E/AndroidRuntime(410):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)03-11 09:37:00.406:E/AndroidRuntime(410):at dalvik.system.NativeStart。 main(Native Method)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):在E/AndroidRuntime(410):at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)0317 09:37:00.406: E/AndroidRuntime(410):at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) (410): 03-11 09:37:00.406:E/AndroidRuntime(410):at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 03-11 09:37:00.406:E/AndroidRuntime ... 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> 

任何幫助將不勝感激。

+0

您可以發佈佈局XML嗎? – MByD 2012-03-11 09:53:08

+0

我已經在佈局xml中添加了。 – Lundi 2012-03-11 09:57:46

回答

2

如果要使用此:

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

你的活動必須實現OnClickListener

+0

啊,那是問題所在。非常感謝您的幫助。 – Lundi 2012-03-11 10:02:16

0
您的logcat的

仔細閱讀告訴我,你的活動類的第28行試圖 投東西,無論不是這樣。如果不計算行數,我猜想它是 setOnClickListener(),並且您的活動沒有實現適當的接口。

0

好的,我已經看到過這個問題。我已將這項活動添加到清單中。你添加了嗎?

+0

是的活動是在清單中。 – Lundi 2012-03-11 10:00:11

0

有可能是線處的問題:

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

因爲你已經實現OnClickListener爲按鈕btnAdd:

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

所以移除上面代碼中的2條線,它將爲你工作。

如果你仍然想使用第1種方法,那麼你的業務必須要實現OnClickListener。

0

嘗試這一個:

公共類爲addItems延伸活動實現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 

公共無效的onClick(查看視圖){

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

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

}

}

相關問題