Wie kann ich benachrichtigt werden, wenn eine Snackbar sich selbst entlassen hat?
Ich bin mit einem Snack aus der com.android.support:design:22.2.0
Bibliothek. Ich verwende es zum rückgängig machen von Löschungen. Mein Leben erleichtern, werde ich, um die Benutzeroberfläche schauen, wie die Dinge tatsächlich aus der Datenquelle gelöscht, und wenn die rückgängig-Schaltfläche in der snack-bar ist nicht gedrückt ist, wird tatsächlich durch die Löschungen in der Datenquelle. Also, ich möchte wissen, Wann die Snackbar ist nicht mehr sichtbar, so ist es sicher zu löschen die Einzelteile.
Kann ich nennen getView() an der Snackbar, aber ich bin mir nicht sicher, was für Hörer, die ich verwenden sollten. Ich habe versucht setOnSystemUiVisibilityChangeListener()
aber das hat nicht funktioniert, ich glaube, es ist nur für die system-status-bar.
Zusätzlich, Snackbar kann nicht verlängert werden, es hat einen privaten Konstruktor.
InformationsquelleAutor der Frage Tyler Pfaff | 2015-06-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Google design-Bibliothek unterstützt, Snackbar Rückrufe in der version 23. Sehen Snackbar docs und Callback-docs.
Sie werden dann benachrichtigt, wenn der Snackbar bekommt entlassen (und auch, wenn angezeigt) und auch die Art der Entlassung, falls dies für Sie sinnvoll ist:
InformationsquelleAutor der Antwort and_dev
InformationsquelleAutor der Antwort Ananth
Kürzlich stolperte ich über diese Frage mich, Wann ich mich zum Blättern und zeigen Snackback, zu viele wurden angezeigt, bevor die ersten verschwunden. Ich musste einen Weg finden, zu wissen, ob die app haben sollte, legte die Snackbar.
Ich persönlich fand diese Lösung.
Es ist wahr, Snackbar selbst nicht bieten jede Art von listener state/Sichtbarkeit, aber man kann immer noch das View-Objekt aus der Snackbar ( getView(); ). Aus dem View-Objekt haben Sie die chance, mit einer Vielzahl von Methoden hinzufügen Zuhörer.
Um es zu implementieren Sie haben, um aus dem gemeinsamen "all-in-one-line" Toast - /Snackbar Gebrauch, da das hinzufügen von Listenern gibt void .
Ich persönlich fand OnAttachStateChangeListener zu erfüllen meine Bedürfnisse.
Löschen einer snipper mit meinem code, im Falle es könnte nützlich für Sie.
Bitte beachten Sie, dass dies nur meine Umsetzung für mein eigenes problem, Handler mit einem postDelayed Thread vielleicht gar nicht passend zu Ihrem Fall. Es war einfach zu geben, eine Allgemeine Vorstellung von der Umsetzung schlug ich mit einem snippet, das ich bereits besitze.
InformationsquelleAutor der Antwort FrancescoC
Benachrichtigt werden, wenn eine snackbar wurde angezeigt und entlassen, können Sie eine Snackbar.Callback per setCallback(Callback).
InformationsquelleAutor der Antwort fab
Gibt es derzeit keine Möglichkeit, um benachrichtigt zu werden, wenn die Snackbar hat fertig angezeigt.
In diesem thread ein workaround diskutiert, basierend auf einem timer für die Dauer der Snackbar display. Snackbar in Support Library nicht enthalten OnDismissListener()?
Ist ein Problem zu betrachten, mit diesem workaround ist es möglich, dass die Snackbar Dauer neu gestartet wird. Die material-design-Spezifikation für Snackbar sagt das wird passieren, wenn ein nicht-dialog oder popup-Menü wird angezeigt.
InformationsquelleAutor der Antwort BrentM
setCallback
ist veraltet und wirdaddCallback
sollte verwendet werden,https://developer.android.com/reference/android/support/design/widget/BaseTransientBottomBar.html#addCallback(android.support.design.widget.BaseTransientBottomBar.BaseCallback)
InformationsquelleAutor der Antwort Tyler Pfaff
onDismissed wird auch aufgerufen, wenn die Aktion Text geklickt wird aus diesem Grund brauchen, um eine Bedingung wie
Und jetzt der neue code wird wie folgt Aussehen.
InformationsquelleAutor der Antwort Vishal G. Gohel
Derzeit können Sie nicht erreichen.
Gibt es nicht einen listener aufgerufen wird, wenn die snackbar ist zurückgezogen.
Der einfachste Weg, dies zu tun ist, um vorübergehend speichern Sie den Datensatz an anderer Stelle (sogar eine lokale variable), dann setzen Sie Sie erneut ein, wenn Sie geschehen, zu schlagen die Schaltfläche rückgängig.
InformationsquelleAutor der Antwort Gabriele Mariotti