点击菜单项android时出错



我想用点击菜单项来代替所有的按钮功能,但是当我点击菜单项时,我得到了错误,下面是我的源代码:

@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

你还需要创建dbHelperObject

 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);

最新更新