Ursprünglich hatte ich ein einzelnes Fragment in meiner MainActivity
Klasse geladen. Ich verwendete folgende inAufruf Fragment Methode aus Aktivität mit FragmentPagerAdapter
onCreate
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(new TimeTableFragment(), TIMETABLEFRAGMENT_TAG)
.commit();
}
und in
onResume
if(*setting has changed*){
TimeTableFragment tf = (TimeTableFragment) getSupportFragmentManager()
.findFragmentByTag(TIMETABLEFRAGMENT_TAG);
if (null != tf) {
tf.onStudentIdChanged();
}
}
The onStudentIdChanged()
Verfahren Wou ld Aktualisieren Sie die Fragmentdaten, wenn sich die Voreinstellungen geändert haben.
Ich habe diese Aktivität jetzt umgestaltet, um FragmentPagerAdapter
zu verwenden und zwei verschiedene Fragmente in Registerkarten zu laden. Beide Fragmente sind Instanzen der gleichen TimetableFragment
Klasse, aber mit verschiedenen Parametern beim Erstellen übergeben.
FragmentPagerAdapter Methoden
TimetableFragment Methode
public static TimeTableFragment newInstance(int sectionNumber) {
TimeTableFragment fragment = new TimeTableFragment();
Bundle args = new Bundle();
args.putInt(ARG_SECTION_NUMBER, sectionNumber);
fragment.setArguments(args);
return fragment;
}
Nun, da dies Zugang arbeiten, in onResume
meiner MainActivity
Ich bin nicht mehr in der Lage, um die Fragmente mit findFragmentByTag
, da sie während onCreate
nicht auf diese Weise hinzugefügt werden und ich die onStudentIdChanged
Methode nicht mehr aufrufen kann.
Wie kann ich für alle erstellten Instanzen des Zeitplanfragments diese Methode aufrufen und die Daten aktualisieren/aktualisieren lassen?
Sie sollten die Fragmente "abonnieren" zu einem Ereignis, nicht explizit "Call" für ein Update von der Aktivität. Dies wird als Beobachtermuster bezeichnet. –