Ajouter une action à un message

Essayer Compose
Jetpack Compose est le kit d'outils d'interface utilisateur recommandé pour Android. Découvrez comment ajouter des notifications dans Compose.
<ph type="x-smartling-placeholder"></ph> SnackBar →

Vous pouvez ajouter une action Snackbar pour permettre à l'utilisateur de répondre à votre message. Dans ce cas, Snackbar place un bouton à côté du texte du message. L'utilisateur peut alors déclencher votre action en appuyant sur le bouton. Par exemple, une application de messagerie peut placer un bouton Annuler sur la ligne "E-mail archivé" correspondant . Si l'utilisateur appuie sur undo (annuler), l'application retire l'e-mail de l'archive.

Image montrant un snackbar avec un bouton d&#39;action ANNULER
Image 1. Une Snackbar avec un bouton d'action "Annuler" qui restaure un élément supprimé.

Pour ajouter une action à un message Snackbar, définissez un objet écouteur qui met en œuvre View.OnClickListener de commande. Le système appelle l'appel onClick() si l'utilisateur appuie sur l'action du message. Cet extrait de code montre, par exemple, pour une action d'annulation:

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.
    }
}

Utilisez l'un des setAction() pour associer l'écouteur à votre Snackbar. Fixez le avant d'appeler show(), comme le montre cet exemple de code:

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();
Si vous utilisez Jetpack Compose, vous pouvez afficher un SnackbarHost, comme illustré dans l'exemple suivant:

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") }
                  }
              )
          }
      }
  }
  
<ph type="x-smartling-placeholder">