在较低Android版本中获取MenuItem

在较低Android版本中获取MenuItem

问题描述:

我想在较低Android版本中获得MenuItem。此代码在Android 4.0.3中正常工作:在较低Android版本中获取MenuItem

_menu.findItem(R.id.menu_item).setVisible(true); 

但是该应用程序在Android 2.3.6中崩溃。它抛出一个NullPointerException。

如何在较低的Android版本中使用它?

我的代码是工作的8的minSdkVersion,并没有任何问题

对于片段:

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 

super.onCreateOptionsMenu(menu, inflater); 

     inflater.inflate(R.menu.menu_result_search, menu); 

     MenuItem saveItem = menu.findItem(R.id.save_item);  
     saveItem.setVisible(false); 

} 

对于活动:

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     super.onCreateOptionsMenu(menu); 
     MenuInflater inflater = getSupportMenuInflater(); 
     inflater.inflate(R.menu.menu_detail, menu); 

     MenuItem upIconActionBar = menu.findItem(R.id.menu_up); 
     upIconActionBar.setVisible(false); 
    } 
+0

我保存菜单中的对象作为变量。它应该在onCreateOptionsMenu之外。 – JavaForAndroid

+0

我在2.3.3 android手机上的onCreateOptionsMenu外部测试,它工作正常,没有崩溃 MenuItem save = mMenu.findItem(R.id.save_item); \t save.setVisible(false); – nirvik

+0

从Android开发人员文档: 如果您已开发Android 2.3.x或更低版本的应用程序,系统会在用户第一次打开菜单时调用onCreateOptionsMenu()创建选项菜单。如果您开发的是Android 3.0及更高版本,则系统会在开始活动时调用onCreateOptionsMenu(),以便将项目显示到操作栏。 在第一次打开它之前,确保你没有试图访问2.3.3上的菜单! – nirvik