我是新来的,所以很抱歉,如果我没有将所有内容都格式化为一流的。我也有关于菜单贡献和Fragment
s 的类似问题。这是我在我的例子中所做的......
我有一个FragmentActivity
托管一个ListFragment
和一个附加Fragment
的包含所选列表项的详细信息 - 非常典型的平板电脑配置。在选择列表项之前不会添加此附加详细信息Fragment
...当我选择列表项时,我想阻止ListFragment
s 菜单项对托管FragmentActivity
操作栏做出贡献。(从 UI 的角度来看,用户主要关注的是新添加的 Fragment,要返回到之前的状态,他们会取消选择他们选择的项目。)由于不ListFragment
应该知道其他 Fragment 以确保可重用性,我发现利用该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);
}
这种方法意味着您的 Fragment 仍然可以重用(它们仍然按照最初的设计进行贡献),但是您的主机FragmentActivity
可以操作 Activity UI,这是它的授权角色之一。
我希望这会有所帮助。