web-dev-qa-db-ja.com

FragmentManagerとFragmentTransactionは正確に何をしますか?

私は以下の簡単なコードを持っています

FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.fragment_container, mFeedFragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();

これらのコード行は何をしますか?

47
Alireza.Heidari
getFragmentManager()

このアクティビティに関連付けられたフラグメントと対話するためのFragmentManagerを返します。

FragmentManagerは、フラグメントを追加、削除、または置換するためのトランザクションを作成するために使用されます。

fragmentManager.beginTransaction();

このFragmentManagerに関連付けられたFragmentsで一連の編集操作を開始します。

使用されるFragmentTransactionオブジェクト。

fragmentTransaction.replace(R.id.fragment_container, mFeedFragment);

現在のフラグメントを、IDがR.id.fragment_containerのレイアウト上のmFeedFragmentに置き換えます

fragmentTransaction.addToBackStack(null);

このトランザクションをバックスタックに追加します。これは、トランザクションがコミットされた後に記憶され、後でスタックからポップされたときに操作を元に戻すことを意味します。

トランザクションをロールバックできるように、戻るボタンの使用に役立ちます。パラメーター名:

このバックスタック状態のオプションの名前、またはnullです。

情報については、他の質問を参照してください nullパラメーターを指定したaddToBackStackの意味は?

Lastステートメントはトランザクションをコミットし、すべてのコマンドを実行します。

詳細については、Googleのドキュメントをご覧ください。

http://developer.Android.com/reference/Android/support/v4/app/FragmentActivity.htmlhttp://developer.Android.com/reference/Android/app/ FragmentManager.htmlhttp://developer.Android.com/reference/Android/app/FragmentTransaction.html

60
Zelldon

Android FragmentManager

FragmentManagerは、AndroidでFragmentsを管理します。具体的には、フラグメント間のトランザクションを処理します。トランザクションは、フラグメントを追加、置換、または削除する方法です。

Android FragmentTransaction

前に述べたように、FragmentTransactionはAndroidでフラグメントを追加、置換、または削除するメソッドを提供します。フラグメントと対話するためのインターフェイスを提供します。


fragmentTransaction.replace(R.id.fragment_container, mFeedFragment);

メソッドreplace(int containerViewId, Fragment fragment)は、コンテナFragmentの既存のcontainerViewIdオブジェクトを置き換え、Fragment fragmentを追加します

fragmentTransaction.addToBackStack(null);

このメソッドaddToBackOfStack(String name)は、このトランザクションをバックスタックに追加します。これは、Fragmentsを記憶し、Activityが再び使用できるように使用できます。

fragmentTransaction.commit();

メソッドcommit()はこのトランザクションをスケジュールしますが、これは瞬時ではありません。メインスレッドで、スレッドの準備ができたときに実行されるようにスケジュールされています。

参照

24
Gready