Puoi aggiungere un'azione a un
Snackbar
per consentire all'utente di rispondere al tuo messaggio. In questo modo, Snackbar inserisce un pulsante accanto al testo del messaggio e l'utente può attivare l'azione toccando il pulsante. Ad esempio, un'app email potrebbe inserire
un pulsante Annulla nel messaggio "Email archiviata". Se l'utente tocca il pulsante
Annulla, l'app estrae di nuovo l'email dall'archivio.
Snackbar con un pulsante di azione di annullamento che
ripristina un elemento rimosso.
Per aggiungere un'azione a un messaggio Snackbar, definisci un oggetto listener
che implementi l'interfaccia
View.OnClickListener. Il sistema chiama il metodo
onClick()
del listener se l'utente tocca l'azione suggerita del messaggio. Ad esempio, questo snippet mostra un
listener per un'azione di annullamento:
class MyUndoListener : View.OnClickListener { override fun onClick(v: View) { // Code to undo the user's last action. } }
Utilizza uno dei metodi
setAction()
per collegare il listener a Snackbar. Collega il
listener prima di chiamare
show(),
come mostrato in questo esempio di codice:
val mySnackbar = Snackbar.make( findViewById(R.id.myCoordinatorLayout), R.string.email_archived, Snackbar.LENGTH_SHORT ) mySnackbar.setAction(R.string.undo_string, MyUndoListener()) mySnackbar.show()
SnackbarHost,
come mostrato nell'esempio seguente:
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") } } ) } } }