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

时间:2015-05-23 22:46:25

标签: android android-fragments menu menuitem

我需要在执行某些操作后从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);

}

2 个答案:

答案 0 :(得分:2)

如果您的菜单项与Fragment生命周期相关联,则应在Fragment上使用setHasOptionsMenu(true),然后在片段中覆盖onCreateOptionsMenu(),片段的菜单。

答案 1 :(得分:0)

也许这就是黑客攻击解决方案,但问题是通过将Fragment 2替换为Fragment 1而不是popBackStack()来解决问题