我是新来的,所以我很抱歉,如果我没有格式化所有的顶尖。我也有类似的问题关于菜单贡献和Fragment
s。这是我在我的实例...
我有一个FragmentActivity
托管ListFragment
和一个额外的Fragment
包含所选清单项的细节 - 非常典型的平板电脑配置。此附加详细信息Fragment
不会添加,直到选择列表项目...当我选择一个列表项目时,我想阻止ListFragment
的菜单项目对主机FragmentActivity
操作栏作出贡献。 (从用户界面的角度来看,用户主要关注的是新添加的片段,为了返回到之前的状态,他们取消选择他们选择的项目。)由于ListFragment
不应该知道其他片段以确保可重用性,我发现利用onPrepareOptionsMenu(..)
方法在FragmentActivity
级别是我的正确方法。
将此片段代码添加到托管FragmentActivity
以快速获取所需的行为;
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
// 'Find' the menu items that should not be displayed - each Fragment's menu has been contributed at this point.
menu.findItem(id.sync).setVisible(false);
}
return super.onPrepareOptionsMenu(menu);
}
这种方法意味着你的碎片残留可重复使用(他们仍然贡献为最初设计),但您的主机FragmentActivity
可以操纵活动UI是获得了授权的角色是一个。
我希望有帮助。