我需要在执行某些操作后从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);
}
答案 0 :(得分:2)
如果您的菜单项与Fragment
生命周期相关联,则应在Fragment
上使用setHasOptionsMenu(true),然后在片段中覆盖onCreateOptionsMenu(),片段的菜单。
答案 1 :(得分:0)
也许这就是黑客攻击解决方案,但问题是通过将Fragment 2替换为Fragment 1而不是popBackStack()
来解决问题