10

AndroidでActionBarを使用する場合、オプションメニューをどのように更新しますか?「getSupportActionBar()」を使用してバーの新しいインスタンスを取得するとともに、バーを非表示にして表示してみました

ユーザーの状態に基づいて動的に変化するログイン/ログアウトボタンを実装しようとしています。

これが私のonCreateOptionsMenuメソッドです

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    if (loggedIn)
        menu.add(0, MENU2, 0, "Logout").setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
    else
        menu.add(0, MENU2, 0, "Login").setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
    menu.add(0, MENU1, 0, "Home").setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
    return super.onCreateOptionsMenu(menu);
}

ありがとう!

4

3 に答える 3

13

invalidateOptionsMenu()を使用してメニューを無効にしてから、コードをonPrepareOptionsMenu領域に配置します。

于 2012-08-23T22:06:52.913 に答える
12

FragmentActivityの呼び出しでinvalidateOptionsMenu()

これもパブリックメソッドであるため、フラグメント呼び出しから更新する場合getActivity().invalidateOptionsMenu()

ところで、SherlockActionBarを使用している場合はgetSherlockActivity().invalidateOptionsMenu() 、フラグメントから呼び出す必要があります。そうしないと、例外が発生します。

于 2012-08-23T22:08:09.877 に答える
9
invalidateOptionsMenu() 

APIレベル11が必要です...

より低いAPIの使用の場合:

supportInvalidateOptionsMenu()
于 2014-02-12T19:31:39.770 に答える