Ich habe einen Viewpager, natürlich mit ein paar Fragmenten. Jedes dieser Fragmente hat CoordinatorLayout als Eltern.
Ich zeige eine Snackbar für etwas. Das Problem ist, wenn Fragment A eine Snackbar zeigt, ist es in Ordnung, aber wenn es benachbart ist, zeigt Fragment B auch eine Snackbar, die Snackbar in Fragment A versteckt sich automatisch.
Da benachbarte Fragmente von viewpager vorinstalliert sind, ist dies ein sichtbares Problem. Irgendeine Problemumgehung? Oder mache ich es falsch?
Sie können setUserVisibleHint (boolean isVisible) getUserVisibleHint () auf Ihrem Fragment, um die Snackbar nur anzuzeigen, wenn das Fragment sichtbar ist.
Sagen wir, Sie haben Fragmente A, B & amp; C
Fragment A ist sichtbar und so ist auch die Snackbar Wenn Fragment B oder C versuchen, eine Snackbar zu öffnen, gibt getUserVisibleHint () false zurück und sie werden nicht mit Fragment A Snackbar verwechselt.
Obs. Seien Sie vorsichtig, wenn Sie dies mit FragmentStatePagerAdapter tun, da Sie NPE erhalten können, die Referenzen auf Fragmente behält und setUserVisibleHint () auf diese Referenzen aufruft.
Bearbeiten: Sie brauchen setUserVisibleHint () nicht, weil es bereits vom System aufgerufen wurde.
Es gibt einige Probleme mit Snackbar in mehreren Fragmenten in ViewPager
1) Wenn snackbar auf Fragment A (sichtbar) und Fragment B (nicht sichtbar) angezeigt wird, sind beide Snackbars nicht sichtbar.
2) Wenn ich eine Kombination aus @Override setUserVisibleHint und getUserVisibleHint () verwende, um die Snackbar je nach Fragmentsichtbarkeit ein- und auszublenden, funktioniert sie nur beim ersten Mal. Danach wird beim Aufruf von snackbar.show () die Snackbar nicht mehr angezeigt (es sei denn, ich erstelle die Snackbar).
Das Folgende ist meine vorgeschlagene Lösung (getestet mit v23.1.1):
%Vor%Tags und Links android android-fragments android-design-library android-snackbar