Du kannst einem Snackbar
eine Aktion hinzufügen, damit der Nutzer auf deine Nachricht antworten kann. Dabei wird durch Snackbar
eine Schaltfläche neben dem Nachrichtentext platziert und der Nutzer kann Ihre Aktion auslösen, indem er auf die Schaltfläche tippt. Eine E-Mail-Anwendung könnte beispielsweise die Schaltfläche Rückgängig machen in der Nachricht „E-Mail archiviert“ hinzufügen. Wenn der Nutzer auf die Schaltfläche Rückgängig machen tippt, entfernt die App die E-Mail aus dem Archiv.
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 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") } } ) } } }