Mesaja işlem ekleme

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

Kullanıcının mesajınıza yanıt vermesine izin vermek için Snackbar'e bir işlem ekleyebilirsiniz. Bunu yaptığınızda Snackbar, mesaj metninin yanına bir düğme ekler ve kullanıcı düğmeye dokunarak işleminizi tetikleyebilir. Örneğin, bir e-posta uygulaması "e-posta arşivlendi" mesajına bir geri alma düğmesi ekleyebilir. Kullanıcı geri al düğmesine dokunduğunda uygulama, e-postayı arşivden çıkarır.

Geri alma işlem düğmesi içeren bir bilgi çubuğu gösteren resim
Şekil 1. Kaldırılan bir öğeyi geri yükleyen bir geri alma işlemi düğmesi içeren Snackbar.

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

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

Dinleyiciyi Snackbar'inize eklemek için setAction() yöntemlerinden birini kullanın. Bu kod örneğinde gösterildiği gibi, show() işlevini çağırmadan önce dinleyiciyi 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 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") }
                  }
              )
          }
      }
  }