2016-11-16 9 views
0

フラグメントAとBを持つBは、拡張Aのようなものです。BからのUIデータの更新は、Aに格納する必要があり、AのUIはデータベースに保存するかどうかを決定します。1つのフラグメントから置換されたフラグメントにデータを渡す方法

だから、まずAをバックスタックに入れ、ある時点でBを必要とし、Bをバックスタックに入れ、 'replace()'でホルダーに入れます。

Bへのデータの受け渡しは引数で行うことができません。 BフラグメントからAフラグメントにデータを戻す方法(AがホルダーのBによって '置き換えられました'(現在は表示されていないか '存在しています')の場合) Developersウェブサイトから

Bundle args = new Bundle(); 
args.putSerializable(TAG_MY_CLASS, myClass); 
Fragment bFrgmt = new B(); 
bFrgmt.setArguments(args); 
getFragmentManager() 
    .beginTransaction() 
    .replace(R.id.holder, bFrgmt, TAG_B_FRAGMENT) 
    .addToBackStack(TAG_B_FRAGMENT).commit(); 
+0

通常、フラグメント間の通信はアクティビティ(パターンオブザーバ)を介して行われます。したがって、アクティブなフラグメントは、そのアクティビティーに(インターフェースを介して)起こっていることをアクティビティーに伝え、アクティビティーはそれをFragment1に伝えることができます – alla

+0

ありがとうalla!私は私の質問は、Bがまだ画面上にあり、Aが未知の状態(同じ「ホルダー」上でBに置き換えられている)のときに、BからAに配信する最良の方法であると考えています。考えてみたのは、Bポップスタックイベントをキャッチして、OSがその時にAにデータを渡すことができるように、 'ホルダー'のAを元に戻すからです。良い方法はありますか? – lannyf

答えて

2

多くの場合、あなたは一つの断片がユーザーイベントに基づいてコンテンツを変更する 例えば、相互に通信することになるでしょう。すべて フラグメントとフラグメントの通信は、関連付けられた アクティビティを通じて行われます。 2つのフラグメントは決して直接通信するべきではありません。

最初にデータをフラグメントからアクティビティに送信し、次にこのデータをアクティビティで受信し、次にアクティビティからデータをフラグメントに送信し、フラグメントonCreateViewメソッドで受け取ることができます。

アクティビティの助けを借りてフラグメント間で通信することができます。 thisアプローチを使用して、アクティビティとフラグメント間で通信できます。

関連する問題