86

フラグメント Cf を呼び出すフラグメント Bf を呼び出すアクティビティ A があります。Cf が呼び出されたときに Bf をバックスタックに配置して、ユーザーがバックスタックに戻ることができるようにします。ただし、Cf で特定のボタンが押された場合は、バックスタックから Bf を削除したいと考えています。これは可能ですか?

popBackStack() 関数があることがわかります。ただし、これがどのように機能するかについては少し混乱しています。この機能を使用しても安全ですか? バックスタックの Bf の後に別のアプリケーションからのアクティビティが挿入される可能性はありますか?

また、バックスタック上のフラグメントの savedInstanceState を変更する方法はありますか?

エミュレーターを使用してバックスタックで堅牢なテストを行う方法がわかりません。

4

4 に答える 4

141

フラグメントを名前でポップできます。フラグメントをバック スタックに追加するときは、名前を付けるだけです。

fragmentTransaction.addToBackStack("fragB");
fragmentTransaction.addToBackStack("fragC");

次に、Fragment_C で、名前 ie.. を使用してバック スタックをポップし、fragBインクルードします。POP_BACK_STACK_INCLUSIVE

someButtonInC.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {

        FragmentManager fm = getActivity()
                .getSupportFragmentManager();
        fm.popBackStack ("fragB", FragmentManager.POP_BACK_STACK_INCLUSIVE);
    }
});
于 2013-02-20T06:25:45.747 に答える