Aktion einer Nachricht hinzufügen

Compose ausprobieren
Jetpack Compose ist das empfohlene UI-Toolkit für Android. Informationen zum Hinzufügen von Benachrichtigungen im Bereich „Schreiben“

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
Abbildung 1. Ein 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();
Wenn Sie Jetpack Compose verwenden, können Sie eine 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") }
                  }
              )
          }
      }
  }