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.
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();
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") } } ) } } }