Anda dapat menambahkan tindakan ke
Snackbar
untuk memungkinkan pengguna merespons pesan Anda. Saat Anda melakukannya, Snackbar akan menempatkan tombol di samping teks pesan, dan pengguna dapat
memicu tindakan Anda dengan mengetuk tombol tersebut. Misalnya, aplikasi email mungkin meletakkan tombol urungkan pada pesan "email yang diarsipkan". Jika pengguna mengetuk tombol
urungkan, aplikasi akan mengembalikan email ke luar arsip.
Snackbar dengan tombol tindakan urungkan yang
memulihkan item yang dihapus.
Untuk menambahkan tindakan ke pesan Snackbar, tentukan objek pemroses yang mengimplementasikan antarmuka View.OnClickListener. Sistem akan memanggil metode
onClick()
pemroses jika pengguna mengetuk tindakan pesan. Misalnya, cuplikan ini menampilkan pemroses untuk tindakan urungkan:
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. } }
Gunakan salah satu metode
setAction()
untuk menyematkan pemroses ke Snackbar. Lampirkan
pemroses sebelum Anda memanggil
show(),
seperti yang ditampilkan dalam contoh kode ini:
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,
seperti yang ditunjukkan dalam contoh berikut:
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") } } ) } } }