Ich benutze einen ViewPager, um durch eine Reihe von Fragmenten zu wechseln, und ich möchte jedes Fragment aktualisieren, nachdem es auf den Bildschirm gleitet. Grundsätzlich möchte ich, dass der Text nach dem Ablegen des Fragments "eingeblendet" wird.onPageSelected Läuft BEVOR onCreateView aufgerufen wird?
Ich habe versucht mit den onStart
und onResume
Methoden des Fragments, und während dies für die meisten Seiten funktioniert, funktioniert es nicht für die zweite Seite, denn aus welchem doof Grund, die erste Seite UND die zweite Seite haben ihre onStart/onResume-Methoden, die gleichzeitig aufgerufen werden (bevor die zweite Seite überhaupt auf den Bildschirm trifft).
Jetzt versuche ich, es mit dem OnPageChangeListener onPageSelected
Callback zu arbeiten. Das Verfahren sieht wie folgt aus:
@Override
public void onPageSelected(final int position) {
mCurrentPosition = position;
PageFragment fragment = (PageFragment) ((MainActivity.ScreenSlidePagerAdapter) mViewPager.getAdapter()).getItem(position);
fragment.onSelect();
}
Und die onSelect
Methode im Fragment sieht wie folgt aus:
public void onSelect(){
new android.os.Handler().postDelayed(
new Runnable() {
public void run() {
mSwitcher.setText("");
mNum = getArguments() != null ? getArguments().getInt("num") : 1;
Media currentMedia = slideshow.getMedia().get(mNum);
mSwitcher.setText(currentMedia.getDisplayName());
}
},
4000);
}
Das Problem mit dieser Art und Weise ist, dass die Linie mSwitcher.setText("");
ein NullPointerException
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextSwitcher.setText(java.lang.CharSequence)' on a null object reference
Was würde vorschlagen, dass die onCreateView
Methode in tha Die Klasse muss noch ausgeführt werden, da die Variable mSwitcher
instanziiert wird. Das scheint mir Banane zu sein, da die Aussicht an dieser Stelle schon auf den Bildschirm rutscht.
Irgendwelche Ideen zur Lösung dieses Problems würden sehr geschätzt werden. Dies ist meine erste Android-Erfahrung, und ich habe versucht, diese blöde Text-Einblendung für eine ganze Woche ohne Glück zu lösen. An diesem Punkt bin ich fast bereit, Mobile als eine Plattform aufzugeben, wegen wie schmerzhaft jede kleine Änderung bisher war.
_ „erste Seite und die zweite Seite haben ihre onStart/onResume Methoden zur gleichen Zeit als“ _ - So arbeitet 'ViewPager' mit Fragmenten (standardmäßig). Sie können einstellen, wie viele Offscreen-Fragmente mit https://developer.android.com/reference/android/support/v4/view/ViewPager.html#setOffscopePageLimit() geladen werden. – CzarMatt
Zeigen Sie Ihre 'onCreateView()' Methode im Fragment an –