MenuItem.setVisible(false)在Fragment中不起作用

时间:2015-08-05 16:06:28

标签: android android-fragments toolbar

我有一个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正确的结果!

2 个答案:

答案 0 :(得分:0)

在某些情况下,如果您忘记添加

.compareTo

会发生这种情况。

答案 1 :(得分:-1)

menu.findItem(R.id.action_search).setVisible(fragmentCount > 0);

setVisible之后,触发

invalidateOptionsMenu();

有效吗?