在较低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);
}
我保存菜单中的对象作为变量。它应该在onCreateOptionsMenu之外。 – JavaForAndroid
我在2.3.3 android手机上的onCreateOptionsMenu外部测试,它工作正常,没有崩溃 MenuItem save = mMenu.findItem(R.id.save_item); \t save.setVisible(false); – nirvik
从Android开发人员文档: 如果您已开发Android 2.3.x或更低版本的应用程序,系统会在用户第一次打开菜单时调用onCreateOptionsMenu()创建选项菜单。如果您开发的是Android 3.0及更高版本,则系统会在开始活动时调用onCreateOptionsMenu(),以便将项目显示到操作栏。 在第一次打开它之前,确保你没有试图访问2.3.3上的菜单! – nirvik