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