Android 出现在其他菜单上的菜单
我正在使用actionbar sherlock开发一个应用程序。我的问题是,我已经设置了菜单,而且我的所有xml文件都是正确的,因为我没有得到编译器和logcat错误 我遇到的问题是,当我加载带有自己特定菜单的片段a时,一切都很好。但当我移动到另一个片段B时,片段A菜单出现在片段B上。关于是什么导致了这一点,有什么想法吗Android 出现在其他菜单上的菜单,android,Android,我正在使用actionbar sherlock开发一个应用程序。我的问题是,我已经设置了菜单,而且我的所有xml文件都是正确的,因为我没有得到编译器和logcat错误 我遇到的问题是,当我加载带有自己特定菜单的片段a时,一切都很好。但当我移动到另一个片段B时,片段A菜单出现在片段B上。关于是什么导致了这一点,有什么想法吗 @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.clear();
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.product_allergy, menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
switch(item.getItemId()){
case R.id.productClear:
addtoList();
break;
}
return true;
}
菜单属于Activty,而不是片段。片段A和B在同一个活动中,因此当A将一些项目添加到活动的菜单中,然后被片段B替换时,活动不会改变,即菜单仍然存在 如果您希望片段B具有不同的菜单项,请覆盖
onCreateOptionsMenu()
方法,记住在片段的onCreate()
方法中设置setHasOptionsMenu(true)
仅供参考,如果您只是想清除前面片段的菜单项,请在onCreateOptions菜单()
中调用menu.clear()
编辑:
当您尝试在片段中处理操作栏回调时,应执行以下操作:
@override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.fragmentActionBarButton:
//your code
return true;
default:
return super.onOptionsItemSelected(item);
}
}
我有所有的代码..片段似乎没有收到操作的回调。在片段中,您应该在调用
super.onOptionsItemSelected()
之前检查所选项。请参见编辑。