1. ホーム
  2. android

[解決済み] バックスタックからフラグメントをポップオフする方法

2023-06-05 02:14:41

質問

アクティビティAがあり、フラグメントBfを呼び出し、フラグメントCfを呼び出しています。 しかし、Cfで特定のボタンが押された場合、Bfをバックスタックから削除したいのです。 これは可能でしょうか?

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

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

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

どのように解決するのですか?

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

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

次に、Fragment_C で、バックスタックを名前を使ってポップします... 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);
    }
});