Sie können einer Snackbar
eine Aktion hinzufügen, damit Nutzer auf Ihre Nachricht antworten können. Dadurch wird neben dem Nachrichtentext eine Schaltfläche von Snackbar
eingefügt. Der Nutzer kann die Aktion auslösen, indem er auf die Schaltfläche tippt. Eine E-Mail-App könnte beispielsweise eine Schaltfläche Rückgängig für die Meldung „E-Mail archiviert“ einfügen. Wenn der Nutzer auf die Schaltfläche Rückgängig tippt, wird die E-Mail wieder aus dem Archiv entfernt.
![Ein Bild, das eine Snackbar mit einer Schaltfläche „RÜCKNAHMEN“ zeigt](https://developer.android.google.cn/static/images/ui/notifications/action_snackbar_undo.png?authuser=0&hl=de)
Snackbar
mit einer Schaltfläche „Rückgängig machen“, über die ein entferntes Element wiederhergestellt wird.
Wenn Sie einer Snackbar
-Nachricht eine Aktion hinzufügen möchten, definieren Sie ein Listener-Objekt, das die View.OnClickListener
-Schnittstelle implementiert. Das System ruft die onClick()
-Methode deines Listeners auf, wenn der Nutzer auf die Nachrichtenaktion tippt. In diesem Snippet wird beispielsweise ein Listener für eine rückgängig zu machende Aktion gezeigt:
Kotlin
class MyUndoListener : View.OnClickListener { fun onClick(v: View) { // Code to undo the user's last action. } }
Java
public class MyUndoListener implements View.OnClickListener { @Override public void onClick(View v) { // Code to undo the user's last action. } }
Verwenden Sie eine der setAction()
-Methoden, um den Listener an Ihre Snackbar
anzuhängen. Hängen Sie den Listener an, bevor Sie show()
aufrufen, wie in diesem Codebeispiel gezeigt:
Kotlin
val mySnackbar = Snackbar.make(findViewById(R.id.myCoordinatorLayout), R.string.email_archived, Snackbar.LENGTH_SHORT) mySnackbar.setAction(R.string.undo_string, MyUndoListener()) mySnackbar.show()
Java
Snackbar mySnackbar = Snackbar.make(findViewById(R.id.myCoordinatorLayout), R.string.email_archived, Snackbar.LENGTH_SHORT); mySnackbar.setAction(R.string.undo_string, new MyUndoListener()); mySnackbar.show();
SnackbarHost
anzeigen lassen, wie im folgenden Beispiel gezeigt:
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { DACPlaygroundTheme { val snackbarHostState = remember { SnackbarHostState() } val scope = rememberCoroutineScope() Scaffold( snackbarHost = { SnackbarHost(snackbarHostState) }, content = { padding -> Button( modifier = Modifier.padding(padding), onClick = { scope.launch { snackbarHostState.showSnackbar( message = "1 item removed", actionLabel = "UNDO", duration = SnackbarDuration.Short ).run { when (this) { Dismissed -> Log.d("SNACKBAR", "Dismissed") ActionPerformed -> Log.d("SNACKBAR", "UNDO CLICKED") } } } } ) { Text("Show snackbar") } } ) } } }