Puoi aggiungere un'azione a
Snackbar
per consentire all'utente di rispondere al tuo messaggio. Quando lo fai, l'Snackbar
inserisce un pulsante accanto al testo del messaggio e l'utente può attivare l'azione toccandolo. Ad esempio, un'app email potrebbe inserire
un pulsante di annullamento nel messaggio "Email archiviata". Se l'utente tocca il pulsante Annulla, l'app ripristina le email dall'archivio.
![Un'immagine che mostra una snackbar con un pulsante di azione ANNULLA](https://developer.android.google.cn/static/images/ui/notifications/action_snackbar_undo.png?authuser=1&hl=it)
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 del messaggio. Ad esempio, questo snippet mostra un
ascoltatore per un'azione di annullamento:
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. } }
Utilizza uno dei
setAction()
metodi per collegare il listener a Snackbar
. Allega l'ascoltatore prima di chiamare
show()
,
come mostrato in questo esempio di codice:
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
,
come mostrato nell'esempio seguente:
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") } } ) } } }