[解決済み] add()、replace()、addToBackStack()の相違点
質問
これらのメソッドを呼び出す際の主な違いは何ですか。
fragmentTransaction.addToBackStack(name);
fragmentTransaction.replace(containerViewId, fragment, tag);
fragmentTransaction.add(containerViewId, fragment, tag);
既にあるフラグメントを置き換えることと、フラグメントをアクティビティ状態に追加すること、アクティビティをバックスタックに追加することとはどういう意味ですか?
次に
findFragmentByTag()
で追加されたタグを検索するのでしょうか?
add()
/
replace()
メソッドまたは
addToBackStack()
というメソッドがあるのでしょうか?
どのように解決するのですか?
1)
fragmentTransaction.addToBackStack(str);
説明 - このトランザクションをバックスタックに追加する。これは、トランザクションがコミットされた後に記憶され、後でスタックからポップされたときにその操作を逆転させることを意味します。
2)
fragmentTransaction.replace(int containerViewId, Fragment fragment, String tag)
説明 - コンテナに追加された既存のフラグメントを置き換える。これは基本的に、同じ containerViewId で追加された現在追加されているすべてのフラグメントに対して remove(Fragment) を呼び出し、ここで与えられた同じ引数で add(int, Fragment, String) を呼び出すのと同じです。
3)
fragmentTransaction.add(int containerViewId, Fragment fragment, String tag)
説明 - フラグメントをアクティビティ状態に追加する。このフラグメントは、オプションでそのビューを(Fragment.onCreateViewが非NULLを返す場合)アクティビティのコンテナビューにすることもできます。
<ブロッククオート既存のフラグメントを置き換えるとはどういうことか、そして フラグメントをアクティビティ状態に追加し、アクティビティを背面に追加する。 スタック ?
実行状態にあるすべてのアクティビティが保管されているスタックがあります。フラグメントは、アクティビティに属します。だから、アクティビティに埋め込むために追加することができる。
1つのアクティビティに複数のフラグメントを組み合わせて、マルチペインのUIを構築したり、複数のアクティビティでフラグメントを再利用したりすることができます。これは、フラグメントコンテナを異なるレイアウトで定義している場合に、本質的に便利です。どのレイアウトでも、他のフラグメントに置き換えるだけでよいのです。
現在のレイアウトに移動すると、そのコンテナのIDが表示され、必要なフラグメントに置き換えることができます。
また、backStack 内の前のフラグメントに戻るには
popBackStack()
メソッドを使用します。そのためには、スタック内のそのフラグメントを
addToBackStack()
で、次に
commit()
を反映させます。これはカレントが上になるように逆順になります。
findFragmentByTag は、add/replace によって追加されたタグを検索します。 メソッドか、addToBackStack メソッドか?
タグをどのように追加したかによります。XMLから読み込んだり、トランザクションで追加されたときに定義したタグを使用してフラグメントを見つけます。
参考文献 フラグメントトランザクション
関連
-
[解決済み】Android Studioの初回起動。Android SDKアドオンリストにアクセスできない
-
[解決済み】ビットマップを保存する場所について
-
[解決済み] sendUserActionEvent() は null です。
-
[解決済み] Androidのgravityとlayout_gravityの違いは何ですか?
-
[解決済み] match_parentとfill_parentの違いは何ですか?
-
[解決済み] AndroidでstartActivityForResultを管理する方法
-
[解決済み] フラグメントのインスタンス状態をバックスタックに正しく保存する方法は?
-
[解決済み] FragmentのsetRetainInstance(boolean)を理解する。
-
[解決済み】「px」、「dip」、「dp」、「sp」の違いは?
-
[解決済み] バックスタックに追加されたフラグメントの状態を維持するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】このアクティビティでは、Theme.AppCompatテーマ(またはその子孫)を使用する必要があります。
-
[解決済み】Android Studioでパラメータ化されたユニットテストを実行すると、指定されたインクルードに対するテストが見つからないエラーが発生する
-
[解決済み】com.android.ide.common.process.ProcessException: aaptの実行に失敗しました! どうすればいいですか?
-
[解決済み】シンボル 'AppCompatActivity' を解決できない。
-
[解決済み】レンダリングの問題 レンダリング中に発生した例外:com/android/util/PropertiesMap [重複].
-
[解決済み】アクティビティにない場所でのgetLayoutInflater()の呼び出し
-
[解決済み】getCheckedRadioButtonId()が無駄なintを返す?
-
[解決済み] Android Fragment no view found for ID?
-
[解決済み] android.intent.action.MAINの意味は何ですか?
-
[解決済み】Android Fragmentとアニメーション