Mesaja işlem ekleme

Compose 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 simgesine bir 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" mesajına geri al düğmesi ekleyebilir. Kullanıcı geri al düğmesine dokunursa uygulama, e-postayı arşivden çıkarır.

GERİ AL işlem düğmesi içeren snackbar bildirimi
Şekil 1. Kaldırılan bir öğeyi geri yükleyen 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ı önerilen mesaj işlemine dokunursa sistem, işleyicinizin onClick() yöntemini çağırır. Örneğin, aşağıdaki snippet'te geri alma işlemi için bir dinleyici gösterilmektedir:

class MyUndoListener : View.OnClickListener {

    override fun onClick(v: View) {
        // Code to undo the user's last action.
    }
}

İşleyiciyi Snackbar öğenize 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:

val mySnackbar = Snackbar.make(
    findViewById(R.id.myCoordinatorLayout),
    R.string.email_archived,
    Snackbar.LENGTH_SHORT
)
mySnackbar.setAction(R.string.undo_string, MyUndoListener())
mySnackbar.show()
Jetpack Compose kullanıyorsanız aşağıdaki örnekte gösterildiği gibi bir SnackbarHost gösterebilirsiniz:
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") }
                }
            )
        }
    }
}