אפשר להוסיף פעולה
Snackbar
כדי לאפשר למשתמש להשיב להודעה שלכם. כשעושים את זה,
Snackbar
מציב לחצן לצד הטקסט של ההודעה, והמשתמש יכול
כדי לבצע את הפעולה הרצויה, מקישים על הלחצן. לדוגמה, אפליקציית אימייל עשויה להציב
לחצן ביטול בקטע 'האימייל שהועבר לארכיון' הודעה. אם המשתמש מקיש על
ביטול, האפליקציה מוציאה את האימייל מהארכיון.
כדי להוסיף פעולה להודעת Snackbar
, צריך להגדיר אובייקט האזנה
שבה מיישמים את
View.OnClickListener
גרפי. המערכת קוראת לפונקציה של המאזינים
onClick()
method, אם המשתמש מקיש על פעולת ההודעה. לדוגמה, קטע הקוד הזה מראה
האזנה לפעולת ביטול:
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()
שיטות לצירוף ה-listener אל 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") } } ) } } }