Możesz dodać do Snackbar
działanie, aby umożliwić użytkownikowi odpowiedź na Twoją wiadomość. Snackbar
umieś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 poczty e-mail może dodać przycisk cofnij do wiadomości „e-mail zarchiwizowany”. Jeśli użytkownik kliknie przycisk Cofnij, aplikacja przywróci e-maila do archiwum.

Snackbar
z przyciskiem cofnięcia, który przywraca usunięty element.
Aby dodać działanie do wiadomości Snackbar
, zdefiniuj obiekt listenera, który implementuje interfejs View.OnClickListener
. Jeśli użytkownik kliknie działanie wiadomości, system wywoła metodę onClick()
listenera. Ten fragment kodu pokazuje na przykład listenera dla działania cofnięcia:
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. } }
Aby dołączyć listenera do Snackbar
, użyj jednej z tych metod:setAction()
. Dołącz listenera przed wywołaniem funkcji show()
, jak w tym przykładzie kodu:
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
, jak w tym przykładzie:
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") } } ) } } }