Anda dapat menambahkan tindakan ke
Snackbar
agar pengguna dapat
menanggapi pesan Anda. Saat Anda melakukan ini,
Snackbar
menempatkan tombol di samping teks pesan, dan pengguna dapat
memicu tindakan dengan
mengetuk tombol. Misalnya, aplikasi email
mungkin menempatkan
tombol urungkan di "email diarsipkan" untuk membuat pesan email baru. Jika pengguna mengetuk
tombol urungkan, aplikasi akan mengeluarkan email kembali dari arsip.
Untuk menambahkan tindakan ke pesan Snackbar
, tentukan objek pemroses
yang mengimplementasikan
View.OnClickListener
dalam antarmuka berbasis web
yang sederhana. Sistem memanggil metode
onClick()
jika pengguna mengetuk tindakan pesan. Misalnya, cuplikan ini menunjukkan
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
setAction()
metode untuk melampirkan pemroses ke Snackbar
. Lampirkan
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") } } ) } } }