يمكنك إضافة إجراء إلى
Snackbar
للسماح للمستخدم بالردّ على رسالتك. عند إجراء ذلك، يضع
Snackbar زرًا بجانب نص الرسالة، ويمكن للمستخدم
تشغيل الإجراء من خلال النقر على الزر. على سبيل المثال، قد يضع تطبيق البريد الإلكتروني زر تراجع في رسالة "تمت أرشفة الرسالة الإلكترونية". إذا نقر المستخدم على زر التراجع، سيعيد التطبيق الرسالة الإلكترونية من الأرشيف.
Snackbar مع زر إجراء التراجع الذي يعيد عنصرًا تمت إزالته
لإضافة إجراء إلى رسالة Snackbar، حدِّد عنصر معالجة يستوفي متطلبات واجهة View.OnClickListener. يستدعي النظام طريقة onClick() في أداة معالجة الأحداث إذا نقر المستخدم على إجراء الرسالة. على سبيل المثال، يعرض هذا المقتطف
معالجًا لإجراء التراجع:
class MyUndoListener : View.OnClickListener { override fun onClick(v: View) { // Code to undo the user's last action. } }
استخدِم إحدى
setAction()
الطرق لربط أداة معالجة الأحداث بـ Snackbar. أرفِق أداة معالجة الأحداث قبل استدعاء show()، كما هو موضّح في عينة تعليمات برمجية التالية:
val mySnackbar = Snackbar.make( findViewById(R.id.myCoordinatorLayout), R.string.email_archived, Snackbar.LENGTH_SHORT ) mySnackbar.setAction(R.string.undo_string, MyUndoListener()) mySnackbar.show()
SnackbarHost،
كما هو موضّح في المثال التالي:
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") } } ) } } }