24
    @Override
    public void onCreateOptionsMenu(Menu menu,MenuInflater inflater){
        Log.d("Does", "get called");
        inflater.inflate(R.menu.menuItem, menu);
        super.onCreateOptionsMenu(menu,inflater);
    }

    @Override
    public void onPrepareOptionsMenu(Menu menu) {
        super.onPrepareOptionsMenu(menu);
        getActivity().invalidateOptionsMenu();
        MenuItem filter = menu.findItem(R.id.section);

        filter.setVisible(false);

    }

メニューをフラグメントで読み込もうとしていますが、onPrepareOptionsMenuメニュー項目を非表示にする必要があるため、まったく呼び出されません。

アップデート:

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

setHasOptionsMenu(true)メソッド内で呼び出していonCreate()ます。

4

5 に答える 5

22

Android 3.0 以降では、アクション バーにメニュー項目が表示されている場合、オプション メニューは常に開いていると見なされます。イベントが発生し、メニューの更新を実行したい場合は、invalidateOptionsMenu() を呼び出して、システムが onPrepareOptionsMenu() を呼び出すように要求する必要があります。

http://developer.android.com/guide/topics/ui/menus.html

特定のアイテムの使用を変更するには:menu.findItem(R.id.your_item_id)

于 2013-08-10T05:31:25.263 に答える
9

おそらく手遅れですが、同じ問題があり、解決策は本当に簡単でした。フラグメントから getActivity().invalidateOptionsMenu() を呼び出すだけです。これは onPrepareOptionsMenu を呼び出し、ここで次のようにアイテムの可視性を制御できます: menu.findItem(R.id.youritem).setVisible(true/false); それが役立つことを願っています!

于 2015-06-25T08:41:43.387 に答える