1

電話とタブレットの両方でサポートする必要があるアプリケーションを開発しています。このアプリケーションでは、Android のフラグメントを使用しています。

申し込みの流れはこんな感じ

MainActivity --> Fragment1 --> Fragment2

このアプリケーションでは、アクティビティのメニュー項目とともに Fragment2 にのみ表示されるメニュー項目が必要です。

だから私は、MainActivity に globle メニュー項目を追加し、Fragment2 に MainActivity のメニュー全体を Fragment2 固有のメニューに置き換えるような 1 つの解決策を試しました。

setHasOptionsMenu(true);

onCreateView 内で、このメソッドを実装します。

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.menu_f, menu);
    super.onCreateOptionsMenu(menu,inflater);
}

今では電話のレイアウトでは問題なく機能しますが、タブレットになると問題が発生します。

これが私のスクリーンショットです。

フラグメント 1 ここに画像の説明を入力

キーボードで 9 を押したときの Fragment 1 と Fragment 2 の組み合わせ (タブレット モード)。 ここに画像の説明を入力

最後に、もう一度 9 を押して pHone ビューに戻ると、追加のメニュー項目が表示されます。

ここに画像の説明を入力

Image で余分なメニュー項目をマークしました。では、なぜこの私が来るのか、どうすれば解決できますか?

4

1 に答える 1

0

このようにメニューグループを非表示にする必要がありますfragment 1

@Override
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setHasOptionsMenu(true);
}

onPrepareOptionsMenuによって追加されたメニューグループを非表示にできる場所を呼び出しますfragment2

@Override
public void onPrepareOptionsMenu(Menu menu) {
        super.onPrepareOptionsMenu(menu);
        menu.setGroupVisible(0, false);
}
于 2014-12-19T06:01:42.790 に答える