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()
解决了问题
我需要在 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()