0

私のアプリは、Actionbar Sherlock でタブ ナビゲーションを使用して、それぞれ独自のリストビューを持つ 2 つのフラグメントを切り替えます。また、各フラグメントには、それに関連付けられた独自のオプション メニューがあるため、2 つのフラグメント クラス内で以下を使用しました。

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

フラグメントの 1 つで、ユーザーがリストで選択したアイテムに応じて、オプション メニューのいくつかのオプションをグレー表示にすることが重要です。私はこれを呼び出すことでこれを行いました:

@Override
public void onPrepareOptionsMenu(Menu menu){
        ...
}

このメソッド内で、リスト内のどの項目がチェックされているかを識別します。タブを切り替えると、すぐに onPrepareOptionsMenu が呼び出されることに気付きました。次にメニューキーを押すと、 onPrepareOptionsMenu は呼び出されず、メニューで使用可能なオプションは更新されません。メニューボタンをもう一度押すと、すべてが正常に機能し、利用可能なオプションが更新されます。タブスイッチに続いてメニューキーが押されたときに onPrepareOptionsMenu が呼び出されるようにする方法はありますか?

onPrepareOptionsMenu をトリガーするために invalidateOptionsMenu() を使用することに関するメモを見てきましたが、この問題はユーザーが最初にメニュー キーを押したときにのみ発生するため、毎回メニュー キー イベントをオーバーライドするのは面倒です。より良い方法はありますか?

4

0 に答える 0