Menambahkan tindakan ke pesan

Mencoba cara Compose
Jetpack Compose adalah toolkit UI yang direkomendasikan untuk Android. Pelajari cara menambahkan notifikasi di Compose.

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 dapat menempatkan tombol urungkan pada pesan "email diarsipkan". Jika pengguna mengetuk tombol urungkan, aplikasi akan mengeluarkan kembali email dari arsip.

Notifikasi snackbar dengan tombol tindakan URUNGKAN
Gambar 1. Snackbar dengan tombol tindakan urungkan yang memulihkan item yang dihapus.

Untuk menambahkan tindakan ke pesan Snackbar, tentukan objek pemroses yang menerapkan antarmuka View.OnClickListener. Sistem memanggil metode onClick() pemroses Anda jika pengguna mengetuk tindakan pesan. Misalnya, cuplikan ini menunjukkan pemroses untuk tindakan urungkan:

class MyUndoListener : View.OnClickListener {

    override fun onClick(v: View) {
        // Code to undo the user's last action.
    }
}

Gunakan salah satu metode setAction() untuk melampirkan pemroses ke Snackbar Anda. Lampirkan pemroses sebelum Anda memanggil show(), seperti yang ditunjukkan dalam contoh kode ini:

val mySnackbar = Snackbar.make(
    findViewById(R.id.myCoordinatorLayout),
    R.string.email_archived,
    Snackbar.LENGTH_SHORT
)
mySnackbar.setAction(R.string.undo_string, MyUndoListener())
mySnackbar.show()
Jika menggunakan Jetpack Compose, Anda dapat menampilkan SnackbarHost, seperti yang ditunjukkan dalam contoh berikut:
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") }
                }
            )
        }
    }
}