Anda dapat menambahkan tindakan ke
Snackbar
agar pengguna dapat merespons pesan Anda. Saat Anda melakukannya, Snackbar
akan menempatkan tombol di samping teks pesan, dan pengguna dapat
memicu tindakan Anda dengan mengetuk tombol. Misalnya, aplikasi email mungkin menempatkan
tombol urungkan pada pesan "email diarsipkan". Jika pengguna mengetuk
tombol urungkan, aplikasi akan mengembalikan email ke luar arsip.
![Gambar yang menampilkan snackbar dengan tombol tindakan UNDO](https://developer.android.google.cn/static/images/ui/notifications/action_snackbar_undo.png?authuser=1&hl=id)
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 ditunjukkan 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") } } ) } } }