Sie können einer Snackbar eine Aktion hinzufügen, damit der Nutzer auf Ihre Nachricht reagieren kann. In diesem Fall wird in der Snackbar neben dem Nachrichtentext eine Schaltfläche angezeigt, über die der Nutzer die Aktion auslösen kann. In einer E-Mail-App könnte beispielsweise in der Nachricht „E-Mail archiviert“ eine Schaltfläche Rückgängig machen angezeigt werden. Wenn der Nutzer auf die Schaltfläche Rückgängig machen tippt, wird die E-Mail wieder aus dem Archiv entfernt.
Snackbar mit einem Aktionsbutton zum Rückgängigmachen, mit dem ein entferntes Element wiederhergestellt wird.
Wenn Sie einer Snackbar-Nachricht eine Aktion hinzufügen möchten, definieren Sie ein Listener-Objekt, das die Schnittstelle View.OnClickListener implementiert. Das System ruft die Methode onClick() des Listeners auf, wenn der Nutzer auf die Nachrichtenaktion tippt. Dieses Snippet zeigt beispielsweise einen Listener für eine Aktion zum Rückgängigmachen:
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 Methoden setAction(), um den Listener an die Snackbar anzuhängen. Hängen Sie den Listener an, bevor Sie show() aufrufen, wie in diesem Codebeispiel zu sehen:
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, wie im folgenden Beispiel zu sehen:
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") } } ) } } }