Możesz dodać działanie do
Snackbar
, aby umożliwić użytkownikowi odpowiedź na Twoją wiadomość. Gdy to zrobisz, Snackbarumieści przycisk obok tekstu wiadomości, a użytkownik będzie mógł wywołać Twoje działanie, klikając ten przycisk. Na przykład aplikacja do poczty e-mail może umieścić przycisk Cofnij w komunikacie „E-mail został zarchiwizowany”. Jeśli użytkownik kliknie przycisk
cofnij, aplikacja wycofa e-maila z archiwum.
Snackbar z przyciskiem polecenia cofania, który przywraca usunięty element.
Aby dodać działanie do wiadomości Snackbar, zdefiniuj obiekt odbiornika, który implementuje interfejs View.OnClickListener. Jeśli użytkownik kliknie sugerowane działanie, system wywoła metodę detektora
onClick() Na przykład ten fragment kodu pokazuje detektor działania cofania:
class MyUndoListener : View.OnClickListener { override fun onClick(v: View) { // Code to undo the user's last action. } }
Aby dołączyć odbiornik do elementu Snackbar, użyj jednej z tych metod:setAction() Dołącz odbiornik przed wywołaniem show(), jak pokazano w tym przykładowym kodzie:
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, jak pokazano w tym przykładzie:
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") } } ) } } }