Anda dapat menambahkan tindakan ke
Snackbar
agar pengguna dapat merespons pesan Anda. Jika Anda melakukannya, Snackbar
akan menempatkan tombol di samping teks pesan, dan pengguna dapat
memicu tindakan dengan mengetuk tombol tersebut. Misalnya, aplikasi email mungkin menempatkan tombol urungkan pada pesan "email yang diarsipkan". Jika pengguna mengetuk tombol urungkan, aplikasi akan mengeluarkan email kembali dari arsip.
Untuk menambahkan tindakan ke pesan Snackbar
, tentukan objek pemroses
yang menerapkan
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 memasang pemroses ke Snackbar
Anda. Tambahkan
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") } } ) } } }