يمكنك إضافة إجراء إلى
Snackbar
للسماح للمستخدم بالرد على رسالتك. عند القيام بذلك،
يضع Snackbar
زرًا بجانب نص الرسالة، ويمكن للمستخدم
شغّل الإجراء عن طريق النقر على الزر. على سبيل المثال، قد يضع تطبيق البريد الإلكتروني
زر تراجع في الرسالة "تمت أرشفة الرسالة الإلكترونية" . إذا نقر المستخدم فوق
تراجع، يسترجع التطبيق الرسالة الإلكترونية من الأرشيف.
لإضافة إجراء إلى رسالة Snackbar
، حدِّد كائن مستمع
التي تنفّذ
View.OnClickListener
من واجهة pyplot. يستدعي النظام بيانات
onClick()
إذا نقر المستخدم على إجراء الرسالة. على سبيل المثال، يعرض هذا المقتطف
المستمع لإجراء التراجع:
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. } }
يمكنك استخدام إحدى
setAction()
لإرفاق المستمع بـ Snackbar
. إرفاق
أداة استماع قبل الاتصال
show()
,
كما هو موضح في نموذج الرمز هذا:
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
,
كما هو موضح في المثال التالي:
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") } } ) } } }