我是新來的,所以我很抱歉,如果我沒有格式化所有的頂尖。我也有類似的問題關於菜單貢獻和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是獲得了授權的角色是一個。
我希望有幫助。