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