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 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.

Gambar yang menampilkan 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 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();
Jika menggunakan Jetpack Compose, Anda dapat menampilkan 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") }
                  }
              )
          }
      }
  }