1. ホーム
  2. android

[解決済み] nullパラメータを持つaddToBackStackの意味は何ですか?

2022-10-22 03:06:32

質問

顧客コードがあります。すべてのフラグメントに対してアクティビティは1つしかありません。つまり、1つのアクティビティがすべてのフラグメントを管理しています。

このアクティビティには、任意のフラグメントのメソッド末尾に、そのフラグメントに対する以下のコードが含まれています。

例えば - フラグメント MoreFragment:

MoreFragment firstFragment = new MoreFragment();
getSupportFragmentManager().beginTransaction()
.replace(R.id.article_fragment, firstFragment)
.addToBackStack(null).commit();

だから

1) addToBackStack(null) の後に commit() ?

2) nullパラメータを addToBackStack ?

3) このように追加されたフラグメントはどのように取得するのですか?

私は最後の行なしでコードを実行したので、このコードは役に立たないように思えます .addToBackStack(null).commit() を削除して実行したところ、問題なく実行されました。

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

<ブロッククオート

addToBackStack(null)の後にcommit()を実行する意味は何ですか?

docsを引用しています。

<ブロッククオート

addToBackStack() を呼び出すと、置換されたトランザクションはバックスタックに保存されます。 バックスタックに保存されるため、ユーザーはトランザクションを逆戻りして 前のフラグメントを戻すことができます。

トランザクションに複数の変更 (別の add() や remove() など) を追加し、addToBackStack() を呼び出した場合。 や remove() など) を追加して addToBackStack() を呼び出すと、commit() を呼び出す前に適用されたすべての変更がバックスタックに追加されます。 を呼び出す前に適用されたすべての変更が 1 つのトランザクションとしてバックスタックに追加されます。 トランザクションとしてバックスタックに追加され、バックボタンはそれらをすべて逆にします。

FragmentTransactionに変更を追加する順序は、以外と重要ではありません。

を呼び出す必要があります。 commit() を最後に追加します。複数のフラグメントを同じコンテナに追加する場合、追加した順番でビュー階層に表示される順番が決まります。

ですから、最後にコミットする必要があります。

なぜaddToBackStackにnullパラメータを渡す必要があるのでしょうか?

nullである必要はなく、文字列でも構いません。必要なければ、NULLを渡せばいいだけです。

public abstract FragmentTransaction addToBackStack (String name)

APIレベル11で追加 このトランザクションをバックスタックに追加します。これは、トランザクションがコミットされた後に記憶され、後でスタックからポップオフされたときにその操作を逆転させることを意味します。

パラメータ name このバックスタック状態のオプションの名前、またはNULL。

に関することです。

<ブロッククオート

このコードは役に立たないようです。 .addToBackStack(null).commit() を実行したところ、何の問題もなく実行されました。

前のフラグメントに移動したい場合は、それをbackstackに追加します。つまり、フラグメントをbackstackに追加するかどうかによります。

このように追加されたフラグメントを取得するにはどうしたらよいでしょうか?

すでにフラグメントのインスタンス firstFragment . だから、フラグメントを後で取得する意味がわからない。

もっと詳しく@。

http://developer.android.com/guide/components/fragments.html

http://developer.android.com/reference/android/app/FragmentTransaction.html#addToBackStack(java.lang.String)