5

アクションバーとアクションバー タブを含むアクティビティがあります。タブのコンテンツからアイテムを選択すると、現在のフラグメントを新しいフラグメントに置き換え、トランザクションをバックスタックに追加し、タブを非表示にしようとしています。

アクション バーのナビゲーション モードを標準に変更して、タブを非表示にします。

問題は、[戻る] ボタンを押すと、(標準モードで) アクション バーが表示された空白のビューしか表示されないことです。フラグメント トランザクションが逆になっているようには見えません。

ナビゲーション モードを標準に変更してタブを非表示にしない場合、トランザクションの取り消しは正常に機能します。

バック プレスをオーバーライドして、ナビゲーション モードをタブに戻そうとしましたが、うまくいきません。

誰かがこれをどのように達成するか教えてもらえますか?

タブが非表示になり、フラグメント トランザクションが発生するコードは次のとおりです。

        ActionBar actionBar = getActivity().getActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);

        Fragment albumListFragment = new AlbumListFragment();
        albumListFragment.setArguments(bundle);
        FragmentTransaction ft = getFragmentManager().beginTransaction();

        ft.replace(android.R.id.content, albumListFragment);
        ft.addToBackStack(null);

        // Commit the transaction
        ft.commit();

明確にするために、このトランザクションがコミットされた後に押し戻すと、タブが前のフラグメントで表示されると予想されます。押し戻した瞬間、タブまたはフラグメントが表示されません。

4

1 に答える 1

8

この質問がまだ関連しているかどうかはわかりませんが、フラグメントの移行後にタブを非表示にすることはうまくいっているようです。

私の ListFragment から、コードで行っている方法と非常によく似た標準のフラグメント遷移を行います。

ただし、私の詳細フラグメントでは、onCreate メソッドでアクション バーを非表示にしています。

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    ActionBar actionBar = getActivity().getActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);

}

私の onPause メソッドでもう一度表示します。

public void onPause() {

    super.onPause();

    ActionBar actionBar = getActivity().getActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

}
于 2012-12-11T16:04:55.440 に答える