私はここで新しいので、すべてを一流にフォーマットしなかった場合はお詫びします。私もメニューの貢献とFragment
sに関して同様の質問をしました。これが私のインスタンスで行ったことです...
私はFragmentActivity
ホスティングListFragment
と、選択されたリストアイテムの詳細を含む追加のものを持っています-Fragment
かなり典型的なタブレット構成。この追加の詳細Fragment
は、リストアイテムが選択されるまで追加されません...リストアイテムを選択するときに、 sメニューアイテムがホスティングアクションバーListFragment
に寄与しないようにします。FragmentActivity
(UIの観点から、ユーザーの主な焦点は新しく追加されたフラグメントです。以前の状態に戻すには、選択したアイテムの選択を解除します。)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
が許可された役割の1つであるアクティビティUIを操作できることを意味します。
それがお役に立てば幸いです。