1

私のアクティビティにはフラグメント コンテナーが含まれているだけで、その中にさまざまなフラグメントをシフトします。現在のフラグメントに応じて、アクション バーにさまざまなアクション アイコンを表示する必要があります。たとえば、フラグメント 1 がアクティブなときはアクション バーにナビゲーション ドロップ リストを表示し、フラグメント 2 がアクティブなときはアクション バーに何も表示しないようにします。

私の質問は次のとおりです。

1) フラグメントの置換時にアクション バーを更新する適切なイベントは何ですか?

2) フラグメント 2 がアクティブになったときに、アクション バーを初期状態に戻す方法 (ナビゲーション ドロップ リストを削除し、他の何かを削除する)。

4

2 に答える 2

0

1) メニューへの参照をアクティビティに保存します。アクティビティでプライベート プロパティを作成します。

private Menu mMenu;

2) のメニューへの参照を取得しますonCreateOptionsMenu

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.test_choice, menu);
    mMenu = menu;
    return super.onCreateOptionsMenu(menu);
}

3) その後、必要に応じてアクション バーの項目を切り替えることができます。たとえば、アクション バー項目のアイコンとタイトルを変更するメソッドを作成しました。

private void displayActionBar() {
    if (mMenu == null) return;

    if (mQuestionStage) {
        MenuItem nextItem = mMenu.findItem(R.id.action_testNext);
        nextItem.setIcon(R.drawable.navigation_accept);
        nextItem.setTitle(getResources().getString(R.string.action_testCheck));
    } else
    {
        MenuItem nextItem = mMenu.findItem(R.id.action_testNext);
        nextItem.setIcon(R.drawable.navigation_forward);
        nextItem.setTitle(getResources().getString(R.string.action_testNext));
    }
}

編集

追加のコメントに基づいて、アクション バーのドロップダウンを切り替える方法を次に示します (表示と非表示の間で)。必要な場所でそのコードを使用できます。

    ActionBar actionBar = getSupportActionBar();
    if (actionBar.getNavigationMode() == ActionBar.NAVIGATION_MODE_LIST)
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
    else
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
于 2013-09-22T02:36:01.667 に答える