Mesaja işlem ekleme

Oluşturma yöntemini deneyin
Jetpack Compose, Android için önerilen kullanıcı arayüzü araç setidir. Compose'da nasıl bildirim ekleyeceğinizi öğrenin.

Kullanıcının mesajınıza yanıt vermesini sağlamak için Snackbar öğesine işlem ekleyebilirsiniz. Bunu yaptığınızda Snackbar, mesaj metninin yanına bir düğme yerleştirir ve kullanıcı düğmeye dokunarak işleminizi tetikleyebilir. Örneğin, bir e-posta uygulaması, "e-posta arşivlendi" iletisine bir geri al düğmesi yerleştirebilir. Kullanıcı geri al düğmesine dokunursa uygulama, e-postayı arşivden geri alır.

GERİ AL işlem düğmesi içeren atıştırmalık çubuğunu gösteren resim
Şekil 1. Kaldırılan bir öğeyi geri yükleyen geri al işlem düğmesi içeren bir Snackbar.

Bir Snackbar mesajına işlem eklemek için View.OnClickListener arayüzünü uygulayan bir işleyici nesnesi tanımlayın. Kullanıcı mesaj işlemine dokunursa sistem, dinleyicinizin onClick() yöntemini çağırır. Örneğin, bu snippet bir geri alma işlemi için dinleyiciyi gösterir:

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

İşleyiciyi Snackbar cihazınıza eklemek için setAction() yöntemlerinden birini kullanın. Aşağıdaki kod örneğinde gösterildiği gibi, show() yöntemini çağırmadan önce işleyiciyi ekleyin:

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();
Jetpack Compose'u kullanıyorsanız aşağıdaki örnekte gösterildiği gibi bir SnackbarHost gösterebilirsiniz:

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