我想用点击菜单项来代替所有的按钮功能,但是当我点击菜单项时,我得到了错误,下面是我的源代码:
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.layout.menu, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case R.id.menuclearcontainer:
// Single menu item is selected do something
ListView listitem = (ListView)findViewById(R.id.listitem);
dbHelper.openDataBase();
SQLiteDatabase db = dbHelper.getWritableDatabase(); // LINE 526
String SQL = "DELETE FROM itemchecked";
db.execSQL(SQL);
try
{
final ArrayList<ItemDetail_class> itemlist = dbHelper.getAllItem(tseparate, tgroup);
listitem.setAdapter(new ItemAdapter(getBaseContext(), itemlist));
Toast.makeText(getBaseContext(), "Selection has been cleared !", Toast.LENGTH_SHORT).show();
}catch (Exception e) {
System.out.println(e);
}
return true;
case R.id.menuaddcontainer:
return true;
}
}
表示错误:
06-02 15:02:08.763: E/AndroidRuntime(15040): java.lang.NullPointerException
06-02 15:02:08.763: E/AndroidRuntime(15040): at com.example.app.ViewDetail.onOptionsItemSelected(ViewDetail.java:526)
06-02 15:02:08.763: E/AndroidRuntime(15040): at android.app.Activity.onMenuItemSelected(Activity.java:2606)
我有上述功能的按钮(在men核容器上),它正常工作,但如果我切换到菜单项,它将是错误的。你有什么解决办法吗?
首先你应该改变这个
menuInflater.inflate(R.layout.menu, menu);
menuInflater.inflate(R.menu.menu, menu);
并在onCreate(....)
中引用您的listitem
你还需要创建dbHelper
的Object
dbHelper = new DataProcessor(this);
可能实例变量没有初始化
改变这
final DataProcessor dbHelper = new DataProcessor(this);
// dbHelper is local to onCreate
// re-declared and initialized. While the instance variable is null
dbHelper = new DataProcessor(this);
也改变
menuInflater.inflate(R.layout.menu, menu);
menuInflater.inflate(R.menu.menu, menu);