Menambahkan tindakan ke pesan

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

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 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();
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") }
                  }
              )
          }
      }
  }