菜单出现在其他菜单android上

时间:2013-09-22 02:59:47

标签: android

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

我遇到的问题是当我用自己的特定菜单加载片段A时,一切都很好。但是当我移动到另一个片段B时,片段A上出现片段A菜单。任何想法都会导致这种情况发生。

@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;
}

1 个答案:

答案 0 :(得分:0)

菜单属于Activty而不是片段。片段A和B处于相同的活动中,因此当A将一些项目添加到活动的菜单中然后它被片段B替换时,活动不会改变,即菜单仍然存在。

如果您希望片段B具有不同的菜单项,请覆盖onCreateOptionsMenu()方法,请记住片段setHasOptionsMenu(true)方法中的onCreate()

仅供参考,如果您只想清除之前片段的菜单项,请在menu.clear()中致电onCreateOptionsMenu()

修改 当您尝试以片段形式处理操作栏回调时,您应该执行以下操作:

@override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.fragmentActionBarButton:
             //your code
             return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}