创建一个简单的数据库应用程序,用于存储食物项目的过期日期。 在设置数据库时遇到问题,我终于认为我已经对它进行了排序。然后我在开始用于添加项目的活动时通知应用程序崩溃。
这是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):at 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):at grocery.a2.app.AddItems.onCreate(AddItems.java:28)03-11 09:37:00.406: E / AndroidRuntime(410):at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 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(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>
非常感谢任何帮助。
答案 0 :(得分:2)
如果你想使用它:
btnView.setOnClickListener((OnClickListener) this);
btnAdd.setOnClickListener((OnClickListener) this);
您的活动必须实施OnclickListener
答案 1 :(得分:0)
仔细阅读您的logcat告诉我,您尝试在活动课程的第28行 把东西扔到什么不是。没有计算线,我猜它是 setOnClickListener(),您的活动没有实现正确的接口。
答案 2 :(得分:0)
答案 3 :(得分:0)
行可能存在问题:
btnView.setOnClickListener((OnClickListener) this);
btnAdd.setOnClickListener((OnClickListener) this);
因为您已经为按钮btnAdd实现了OnClickListener:
btnAdd.setOnClickListener(new OnClickListener(){
public void onClick(View view) {
......
});
所以从代码中删除上面两行,它会对你有用。
如果您仍想使用第一种方法,那么您的活动必须实现OnClickListener。
答案 4 :(得分:0)
试试这个:
public class AddItems extends 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;
}
}
}