Vous pouvez ajouter une action à un Snackbar
pour permettre à l'utilisateur de répondre à votre message. Dans ce cas, Snackbar
place un bouton à côté du texte du message, et l'utilisateur peut déclencher votre action en appuyant sur ce bouton. Par exemple, une application de messagerie peut ajouter un bouton Annuler à son message "E-mail archivé". Si l'utilisateur appuie sur le bouton Annuler, l'e-mail est retiré de l'archive.
![Image montrant une barre de notification avec un bouton "ANNULER"](https://developer.android.google.cn/static/images/ui/notifications/action_snackbar_undo.png?authuser=5&hl=fr)
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 implémente l'interface View.OnClickListener
. Le système appelle la méthode onClick()
de votre écouteur si l'utilisateur appuie sur l'action du message. Par exemple, cet extrait de code montre un écouteur 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'une des méthodes setAction()
pour associer l'écouteur à votre Snackbar
. Associez l'écouteur avant d'appeler show()
, comme illustré dans 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();
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") } } ) } } }