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 1.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
classMyUndoListener:View.OnClickListener{funonClick(v:View){// Code to undo the user's last action.}}
Java
publicclassMyUndoListenerimplementsView.OnClickListener{@OverridepublicvoidonClick(Viewv){// 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:
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/27 (UTC).
[null,null,["Dernière mise à jour le 2025/07/27 (UTC)."],[],[],null,["# Add an action to a message\n\nTry the Compose way \nJetpack Compose is the recommended UI toolkit for Android. Learn how to add notifications in Compose. \n[Snackbar →](/develop/ui/compose/components/snackbar) \n\nYou can add an action to a\n[Snackbar](/reference/com/google/android/material/snackbar/Snackbar)\nto let the user respond to your message. When you do this, the\n`Snackbar` puts a button next to the message text, and the user can\ntrigger your action by tapping the button. For example, an email app might put\nan *undo* button on its \"email archived\" message. If the user taps the\n*undo* button, the app takes the email back out of the archive.\n**Figure 1.** A `Snackbar` with an undo action button that restores a removed item.\n\nTo add an action to a `Snackbar` message, define a listener object\nthat implements the\n[View.OnClickListener](/reference/android/view/View.OnClickListener)\ninterface. The system calls your listener's\n[onClick()](/reference/android/view/View.OnClickListener#onClick(android.view.View))\nmethod if the user taps the message action. For example, this snippet shows a\nlistener for an undo action: \n\n### Kotlin\n\n```kotlin\nclass MyUndoListener : View.OnClickListener {\n\n fun onClick(v: View) {\n // Code to undo the user's last action.\n }\n}\n```\n\n### Java\n\n```java\npublic class MyUndoListener implements View.OnClickListener {\n\n @Override\n public void onClick(View v) {\n\n // Code to undo the user's last action.\n }\n}\n```\n\nUse one of the\n[setAction()](/reference/com/google/android/material/snackbar/Snackbar#setAction(int, android.view.View.OnClickListener))\nmethods to attach the listener to your `Snackbar`. Attach the\nlistener before you call\n[show()](/reference/com/google/android/material/snackbar/BaseTransientBottomBar#show()),\nas shown in this code sample: \n\n### Kotlin\n\n```kotlin\nval mySnackbar = Snackbar.make(findViewById(R.id.myCoordinatorLayout),\n R.string.email_archived, Snackbar.LENGTH_SHORT)\nmySnackbar.setAction(R.string.undo_string, MyUndoListener())\nmySnackbar.show()\n```\n\n### Java\n\n```java\nSnackbar mySnackbar = Snackbar.make(findViewById(R.id.myCoordinatorLayout),\n R.string.email_archived, Snackbar.LENGTH_SHORT);\nmySnackbar.setAction(R.string.undo_string, new MyUndoListener());\nmySnackbar.show();\n```\nIf you are using [Jetpack Compose](/jetpack/compose), you can show a [SnackbarHost](/reference/kotlin/androidx/compose/material/package-summary#SnackbarHost(androidx.compose.material.SnackbarHostState,androidx.compose.ui.Modifier,kotlin.Function1)), as shown in the following example: \n\n### Kotlin\n\n```kotlin\n override fun onCreate(savedInstanceState: Bundle?) {\n\n super.onCreate(savedInstanceState)\n\n setContent {\n DACPlaygroundTheme {\n val snackbarHostState = remember { SnackbarHostState() }\n val scope = rememberCoroutineScope()\n Scaffold(\n snackbarHost = { SnackbarHost(snackbarHostState) },\n content = { padding -\u003e\n Button(\n modifier = Modifier.padding(padding),\n onClick = {\n scope.launch {\n snackbarHostState.showSnackbar(\n message = \"1 item removed\",\n actionLabel = \"UNDO\",\n duration = SnackbarDuration.Short\n ).run {\n when (this) {\n Dismissed -\u003e Log.d(\"SNACKBAR\", \"Dismissed\")\n ActionPerformed -\u003e Log.d(\"SNACKBAR\", \"UNDO CLICKED\")\n }\n }\n }\n }\n ) { Text(\"Show snackbar\") }\n }\n )\n }\n }\n }\n \n```\n| **Note:** A `Snackbar` automatically goes away after a short time, so the user might not see the message or have a chance to tap the button. For this reason, offer other ways to perform `Snackbar` actions."]]