0

我已经让我们假设三个片段,并希望显示单独的选项菜单为每个片段以及共同的菜单形式的基本acticity。我在片段中的onCreateView()中设置了setHasOptionMenu(true),并覆盖onOptionItemCreated()。它成功显示菜单。现在我想隐藏/删除从片段添加的菜单作为片段菜单是可见的片段B以及它只添加新的菜单购买并没有删除片段摧毁旧的。请帮忙!隐藏选项菜单创建从片段与setHasOptionMenu(true)

回答

0

发生这种情况是因为onCreateView()未被再次调用,我们也不能依赖onResume(),因为对于片段而言,它与活动生命周期紧密相关。针对这种情况的简单攻击可以是使用replace代替add使用碎片事务。这将强制片段娱乐,因此应该在这里工作。

[编辑]

或者,你可以尝试把菜单代码片段onResume()严格使用replace()代替add()当片段交易无处不在。

+0

我已经使用替代方法但不富有成效。 –

+0

@ZeeshanAhmed我做了一个示例项目来测试它,它为我工作。看到我上面的编辑。 – Shaishav

+0

你介意分享一下你的代码吗?正如我尝试过一样,但无法做到这一点。 –

1

在你想隐藏一些项目的Fragment,请执行下列操作 -

@Override 
public void onPrepareOptionsMenu(Menu menu) { 
    MenuItem item=menu.findItem(R.id.action_search); 
    item.setVisible(false); 
    ... 
} 
0

的活动:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    super.onCreateOptionsMenu(menu); 
    menu.findItem(R.id.action_id_here).setVisible(false); 

    return true; 
} 

对于片段:

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    super.onCreateOptionsMenu(menu, inflater); 
    menu.findItem(R.id.action_id_here).setVisible(false); 
}