我有一个Fragment1,我正在创建Fragment1的newInstance并从Fragment1开始,即我的片段堆栈是Fragment1 - >片段1。我希望在第一个实例中工具栏菜单中的可见项,但在第二个实例中不可见。当我启动第一个实例时,项目是不可见的,我转到第二个实例,在第二个实例中项目是可见的,但是当我点击按钮后,我转到第一个实例,项目是可见的,但必须是不可见的。我怎么解决它?
代码:
@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);
...
当我将代码从onCreateOptionsMenu移动到onPrepareOptionsMenu时,结果是相同的。在fragmentCount
正确的结果!
答案 0 :(得分:0)
在某些情况下,如果您忘记添加
.compareTo
会发生这种情况。
答案 1 :(得分:-1)
menu.findItem(R.id.action_search).setVisible(fragmentCount > 0);
在setVisible
之后,触发
invalidateOptionsMenu();
有效吗?