Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 出现在其他菜单上的菜单_Android - Fatal编程技术网

Android 出现在其他菜单上的菜单

Android 出现在其他菜单上的菜单,android,Android,我正在使用actionbar sherlock开发一个应用程序。我的问题是,我已经设置了菜单,而且我的所有xml文件都是正确的,因为我没有得到编译器和logcat错误 我遇到的问题是,当我加载带有自己特定菜单的片段a时,一切都很好。但当我移动到另一个片段B时,片段A菜单出现在片段B上。关于是什么导致了这一点,有什么想法吗 @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {

我正在使用actionbar sherlock开发一个应用程序。我的问题是,我已经设置了菜单,而且我的所有xml文件都是正确的,因为我没有得到编译器和logcat错误

我遇到的问题是,当我加载带有自己特定菜单的片段a时,一切都很好。但当我移动到另一个片段B时,片段A菜单出现在片段B上。关于是什么导致了这一点,有什么想法吗

@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()
之前检查所选项。请参见编辑。