Saya pikir Anda dapat menggunakan Pola Pengamat yang merupakan praktik yang baik dalam situasi Anda.
Seperti yang dijelaskan oleh GoF:
Tentukan ketergantungan satu-ke-banyak antar objek sehingga ketika satu objek berubah status, semua dependennya akan diberitahu dan diperbarui secara otomatis.
Baca selengkapnya di http://www.java2blog.com/2013/02/observer-design-pattern-in-java.html#TLio7G2ruqxvfZUR.99
Dalam situasi Anda, Anda memiliki hubungan seperti itu (satu-ke-banyak) dan ketika suatu peristiwa terjadi dalam aktivitas Anda ingin mengetahui dua fragmen itu.
Fragmen adalah implementasi kelas pengamat dan aktivitas Anda memiliki peran subjek seperti yang diilustrasikan pada gambar di atas.
Saya harap ini dapat membantu Anda mengimplementasikan kode Anda dengan cara yang sangat baik. beberapa tutorial dapat ditemukan di link berikut :
https://dzone.com/articles/observer-pattern-java http://www.tutorialspoint.com/design_pattern/observer_pattern.htm
Sunting: dalam situasi tertentu:
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);
}
Fragmen berada dalam definisi yang benar dengan pola desain ini jadi saya tidak mengubah kodenya:
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) {
}
Anda perlu memiliki referensi ke bagian-bagian dalam aktivitas (sebagai pengamat).
ArrayList< OnReceiveListener > observers = new ArrayList< OnReceiveListener>();
memang seorang pengamat dapat berlangganan atau mendaftarkan dirinya ke suatu subjek (fragmen menyimpan referensi ke aktivitas tersebut (lebih baik menggunakan pola tunggal! :D). seperti ini :
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)
}
/* To avoid memory leaks, remember to unregister receivers when no longer observing */
public void unregisterObserver(OnReceiveListener observer) {
observers.remove(observer);
}
notifyObservers(){
// call this method in the listener you want
for( Observer obser : observers)
obser. receivePreview(param )
}
...
//in fragment initialization:
MainAct.getInstance().registerObserver(this)
person
Sir1
schedule
27.05.2016