Android : 无法删除片段中的菜单项

Android : Menu items can't be removed in the fragment

我需要在 return 从 Fragment 2 到 Fragment 1 之后删除膨胀的菜单。

我在制作popBackStack后清除了菜单,但是菜单项无法删除。

 @Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    menu.clear();
    if (savedItemsExist())
        inflater.inflate(R.menu.menu_saved_filters, menu);
    else
    {
        Log.i(TAG + " onCreateOptionsMenu", " going to delete");
        menu.clear();
    }
    super.onCreateOptionsMenu(menu, inflater);
}

@Override
public void onPrepareOptionsMenu(Menu menu) {
    menu.clear();
    if (savedItemsExist())
       getActivity().getMenuInflater().inflate(R.menu.menu_saved_filters, menu);
    else{
        menu.clear();
    }
    super.onPrepareOptionsMenu(menu);

}

如果您有与 Fragment 的生命周期关联的菜单项,您应该改为在片段中使用 setHasOptionsMenu(true) on your Fragment and then override onCreateOptionsMenu(),扩充片段的菜单。

也许这是 hack 解决方案,但通过将片段 2 替换为片段 1 而不是 popBackStack()

解决了问题