次の方法の書き込みを呼び出すときにインターフェイスインスタンス
public OnReceiveListener getListener() {
mListener = this;
return mListener
}
とあなたの活動のを返す各フラグメント内の1つの関数を作成してみてください私はあなたが使用できると思いますオブザーバーパターンそれはですあなたの状況で良い練習。
のGoFで説明したように:
「一つのオブジェクトの状態が変化したときに、そのすべての扶養家族が自動的に通知され、更新されるように、オブジェクト間の1対多の依存関係を定義します」。あなたの状況ではhttp://www.java2blog.com/2013/02/observer-design-pattern-in-java.html#TLio7G2ruqxvfZUR.99
でより
読むイベントはあなたが認識してその2つのフラグメントにしたい活動で発生したとき、あなたは(1対多)、このような関係を持っています。
フラグメントはオブザーバークラスを実装していると、上図で示してあなたの活動は、被験者の役割を担っています。
これは、コードを非常にうまく実装するのに役立ちます。 いくつかのチュートリアルでは、以下のリンクで見つけることができます。
https://dzone.com/articles/observer-pattern-java http://www.tutorialspoint.com/design_pattern/observer_pattern.htm
編集:与えられた状況で:私は変更されませんので、
public interface OnReceiveListener { // this is your observer interface !
// This can be any number of events to be sent to the activity
void receivePreview(Object... obj);
}
フラグメントは、このデザインパターンとの正しい定義していますコード:
public class OneFragment extends Fragment Implements OnReceiveListener {
@Override
public void receivePreview(Object... obj) {
}
}
public class TwoFragment extends Fragment implements OnReceiveListener{
@Override
public void receivePreview(Object... obj) {
}
ます(オブザーバーとして)活動のフラグメントへの参照を持っている必要があります。
ArrayList<OnReceiveListener> observers = new ArrayList< OnReceiveListener>();
実際に観察者は、断片が活性を参照(より良い使用するシングルトンパターンを保持する(購読または被験者に自身を登録することができる:D)のように:。
public class MainAct extends AppCompatActivity {
private static MainAct instance;
public static MainAct getInstance() {
if(instance != null)
return instance;
}
// I think it is better to create the instance variable in the onCreate() method of the MainAct activity
onCreate(...)
{
.
.
.
instance = this;
...
}
public void registerObserver(OnReceiveListener observer){
observers.add(observer)
}
notifyObservers(){
// call this method in the listener you want
for(Observer obser : observers)
obser. receivePreview(param)
}
...
//でフラグメントの初期化:。 MainAct.getInstance()registerObserver(この)
もう少し明確に説明することができますか、正確に何を達成したいですか?また、単一のインターフェースが必要な場合は、なぜそれを両方のフラグメントに実装していますか? –
greenbotsイベントバスライブラリを試してくださいhttp://www.andreas-schrade.de/2015/11/28/android-how-to-use-the-greenrobot-eventbus/ –