Aktion einer Nachricht hinzufügen

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

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.

Bild, das eine Snackbar mit der Aktionsschaltfläche „RÜCKGÄNGIG MACHEN“ zeigt
Abbildung 1: Ein Snackbar mit der Schaltfläche „Aktion rückgängig machen“, mit der 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 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 ein 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") }
                  }
              )
          }
      }
  }