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 mungkin menempatkan tombol urungkan pada pesan "email diarsipkan". Jika pengguna mengetuk tombol urungkan, aplikasi akan mengembalikan email ke luar arsip.

Gambar yang menampilkan snackbar dengan tombol tindakan UNDO
Gambar 1. Snackbar dengan tombol tindakan urungkan yang memulihkan item yang dihapus.

Untuk menambahkan tindakan ke pesan Snackbar, tentukan objek pemroses yang mengimplementasikan 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 menyematkan pemroses ke Snackbar. Lampirkan 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") }
                  }
              )
          }
      }
  }