Kullanıcının iletinize 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 geri al düğmesi ekleyebilir. Kullanıcı geri al düğmesine dokunursa uygulama, e-postayı arşivden geri çıkarır.
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, 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. } }
İş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:
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();
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") } } ) } } }