0

この問題のベスト プラクティス ソリューションを探しています。

Activity1 には、有効な製品のスピナーを含む Fragment1 が含まれています

Activity1 には、Fragment2 (リスト フラグメント) を含む Activity2 を起動するアクション バー メニュー オプション 'products' が含まれています。

Fragment2 から、Activity3/Fragment3 を使用して製品を追加/編集できます。

Fragment3 に加えられた変更 ActivityResult を使用して Fragment2 に戻ってきましたが、Interface でも同じことができることを知っています。

問題は、Fragment 3 で行われた変更を Fragment1 スピナーに反映させる最善の方法は何ですか?

onResume() で Fragment1 のスピナー値をリロードできることはわかっていますが、Fragment3 に変更を加えていなければ、これは不要です。

4

1 に答える 1

0

オブザーバー パターンを使用します。次のようなインターフェイスを実装します

public void onInputChanged(yourStuff);

最初のフラグメントにこのインターフェイスを実装させ、フラグメントをリスナー プールに追加します。

変更が発生したアクティビティから、次のようなことを行います

EventManager.fireOnInPutChanged(yourData)

EventManager は、リスナーがサインアップする呼び出しを b します。

このように、Activity forResult は必要なく、何かが変更されたかどうかを常に知ることができます。

于 2013-09-18T12:48:26.617 に答える