0

Android Studio を使用して Android アプリを作成しています。Activity1 と Activity2 があるとします。Activity2 には 3 つのフラグメント (3 つのタブ) があります。Fragment Adapterを使用して、Activity1からActivity2に、次にActivity2からそのフラグメントにデータを渡すことができました。

1) 反対のことをしたい: 3 つのフラグメントすべてからデータを収集し、それらが座っているアクティビティ (Activity2) に渡し、Activity2 からのデータを Activity1 に戻します。

1 つのフラグメントから Activity2 にデータを渡すインターフェイスを実装しましたが、3 つのフラグメントすべてから Activity2 にデータを渡す方法 (およびタイミング) を教えてください。私が書いたメソッドは、オブジェクトをフラグメントから Activity2 に送信します。しかし、Activity2 のメソッドは 1 つのオブジェクトしか取得しません... または、フラグメントから Activity2 Fragment Adapter にデータを送信する方法はありますか? (これは私が考える最高のものかもしれません...)

2) Activity2 から Activity1 にデータを渡す最善の方法は、「onBackPressed」をオーバーライドし、startActivityForResult と setResult を使用することですか? (ActionBarの「戻るボタン」以外に、それを行うためのボタンはありません)。

ありがとう!

4

3 に答える 3

1

setResult1()1) 次のような 3 つのメソッドを使用してインターフェイスを作成しsetResult2()setResult3()Activity にこのインターフェイスを実装させて、3 つのフラグメントの結果が利用可能になるとすぐに収集できるようにします。フラグメントは、結果が変更されるとすぐに、このインターフェイスで独自のメソッドを呼び出す必要があります。また、復元後にも呼び出す必要があります (向きを変更した場合など、アクティビティが再作成された場合)。

2) Activity2が結果をActivity1に送り返すには、 を使用してActivity1からActivity2を開始するのが最善の方法ですstartActivityForResult()次に、 Activity2によって新しい結果が収集されるたびに、を呼び出す必要がありますsetResult(int resultCode, Intent Data)。複数回呼び出して、前の結果を置き換えることができます。結果をすぐに設定する場合は、オーバーライドする必要はありませんonBackPressed()

于 2015-06-04T10:06:51.643 に答える
0

3 つのフラグメントすべてのデータを共有設定に保存し、アクティビティ 1 でそのデータを取得できます。取得したら、共有設定からデータをクリアする必要があります。

于 2015-06-04T09:52:18.620 に答える