私はFragment
中にありActivity
ます。このアクティビティにはが含まれますOptionsMenu
。
を使用しFragmentTransaction
て同じFragmentクラスの新しいインスタンスを起動します。を選択するOptionsMenu
と、2回読み込まれるため、2回表示されます。
フラグメント間でOptionsMenuを管理するにはどうすればよいですか
ありがとう。
PS:英語でごめんなさい
私はFragment
中にありActivity
ます。このアクティビティにはが含まれますOptionsMenu
。
を使用しFragmentTransaction
て同じFragmentクラスの新しいインスタンスを起動します。を選択するOptionsMenu
と、2回読み込まれるため、2回表示されます。
フラグメント間でOptionsMenuを管理するにはどうすればよいですか
ありがとう。
PS:英語でごめんなさい
そのような方法はありません。BackPressedで処理し、独自のカスタムメニューを新しいfragmnetとして表示できます。または、フラグメントクラスとコンテンツに応じて、FragmentTransactionの非アクティブ内でオプションメニューを管理します
私は解決策を見つけます、
OptionsMenuはアクティビティでのみ作成します。アクティビティでもOptionsItemsSelectedを取得します。
onOptionsItemSelected()が発生すると、次のような現在のフラグメントを取得します。
FragmentManager fg = getSupportFragmentManager();
Fragment frag = fg.findFragmentById(R.id.fragmentMap);
すべてのフラグメントのIDは同じですが、常にフラグメントが一番上に表示されます。次に、私は呼び出すことができます:
frag.onOptionsItemSelected(item);
フラグメント受信に送信すると、UIが正しく更新されます。
お役に立てば幸いです。
拡張クラスで遊んでみてくださいsetHasOptionsMenu(boolean)
。trueFragment
に設定されている場合はFragmentManager
、現在のフラグメントを自動的に呼び出す必要があります。falseonOptionsItemSelected
に設定されている場合は、アクティビティでこれらのコールバックを手動で呼び出すことができますonOptionsItemSelected
。
私のために働いた...:)