问题
I have a Fragment1, and i am make newInstance of Fragment1 and start in Fragment1, i.e. my fragment stack is Fragment1 -> Fragment1. I want that in first instance visible item in toolbar menu, but in second instance invisible. When i start first instance, item is invisible, i go to the second instance, in second instance the item is visible, but when i tap button back, i go to first instance, and item is visible, but must be invisible. How i can fix it?
Code:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
...
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.t_menu, menu);
int fragmentCount = getActivity()
.getSupportFragmentManager().getBackStackEntryCount();
menu.findItem(R.id.action_search).setVisible(fragmentCount > 0);
...
When i move code from onCreateOptionsMenu to onPrepareOptionsMenu, result is same. In fragmentCount
correct result!
回答1:
In some occasions, if you forget to add
super.onCreateOptionsMenu(menu,inflater);
this will occur.
回答2:
menu.findItem(R.id.action_search).setVisible(fragmentCount > 0);
Right after setVisible
, triggering
invalidateOptionsMenu();
is effective?
来源:https://stackoverflow.com/questions/31837548/menuitem-setvisiblefalse-doesnt-work-in-fragment