میتوانید عملی را به Snackbar اضافه کنید تا کاربر به پیام شما پاسخ دهد. وقتی این کار را انجام میدهید، Snackbar دکمهای را در کنار متن پیام قرار میدهد و کاربر میتواند با ضربه زدن روی دکمه، اقدام شما را آغاز کند. به عنوان مثال، یک برنامه ایمیل ممکن است یک دکمه لغو را روی پیام "ایمیل بایگانی شده" خود قرار دهد. اگر کاربر روی دکمه لغو ضربه بزند، برنامه ایمیل را از بایگانی خارج می کند.
شکل 1. یک Snackbar با یک دکمه عمل لغو که یک مورد حذف شده را بازیابی می کند.
برای افزودن یک عمل به پیام Snackbar ، یک شی شنونده تعریف کنید که رابط View.OnClickListener را پیاده سازی کند. اگر کاربر روی عمل پیام ضربه بزند، سیستم متد onClick() شنونده شما را فراخوانی می کند. به عنوان مثال، این قطعه یک شنونده را برای یک عمل واگرد نشان می دهد:
کاتلین
classMyUndoListener:View.OnClickListener{funonClick(v:View){// Code to undo the user's last action.}}
جاوا
publicclassMyUndoListenerimplementsView.OnClickListener{@OverridepublicvoidonClick(Viewv){// Code to undo the user's last action.}}
از یکی از متدهای setAction() برای پیوست کردن شنونده به Snackbar خود استفاده کنید. همانطور که در این نمونه کد نشان داده شده است، قبل از فراخوانی show() شنونده را ضمیمه کنید:
میتوانید عملی را به Snackbar اضافه کنید تا کاربر به پیام شما پاسخ دهد. وقتی این کار را انجام میدهید، Snackbar دکمهای را در کنار متن پیام قرار میدهد و کاربر میتواند با ضربه زدن روی دکمه، اقدام شما را آغاز کند. به عنوان مثال، یک برنامه ایمیل ممکن است یک دکمه لغو را روی پیام "ایمیل بایگانی شده" خود قرار دهد. اگر کاربر روی دکمه لغو ضربه بزند، برنامه ایمیل را از بایگانی خارج می کند.
شکل 1. یک Snackbar با یک دکمه عمل لغو که یک مورد حذف شده را بازیابی می کند.
برای افزودن یک عمل به پیام Snackbar ، یک شی شنونده تعریف کنید که رابط View.OnClickListener را پیاده سازی کند. اگر کاربر روی عمل پیام ضربه بزند، سیستم متد onClick() شنونده شما را فراخوانی می کند. به عنوان مثال، این قطعه یک شنونده را برای یک عمل واگرد نشان می دهد:
کاتلین
classMyUndoListener:View.OnClickListener{funonClick(v:View){// Code to undo the user's last action.}}
جاوا
publicclassMyUndoListenerimplementsView.OnClickListener{@OverridepublicvoidonClick(Viewv){// Code to undo the user's last action.}}
از یکی از متدهای setAction() برای پیوست کردن شنونده به Snackbar خود استفاده کنید. همانطور که در این نمونه کد نشان داده شده است، قبل از فراخوانی show() شنونده را ضمیمه کنید:
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# Add an action to a message\n\nTry the Compose way \nJetpack Compose is the recommended UI toolkit for Android. Learn how to add notifications in Compose. \n[Snackbar →](/develop/ui/compose/components/snackbar) \n\nYou can add an action to a\n[Snackbar](/reference/com/google/android/material/snackbar/Snackbar)\nto let the user respond to your message. When you do this, the\n`Snackbar` puts a button next to the message text, and the user can\ntrigger your action by tapping the button. For example, an email app might put\nan *undo* button on its \"email archived\" message. If the user taps the\n*undo* button, the app takes the email back out of the archive.\n**Figure 1.** A `Snackbar` with an undo action button that restores a removed item.\n\nTo add an action to a `Snackbar` message, define a listener object\nthat implements the\n[View.OnClickListener](/reference/android/view/View.OnClickListener)\ninterface. The system calls your listener's\n[onClick()](/reference/android/view/View.OnClickListener#onClick(android.view.View))\nmethod if the user taps the message action. For example, this snippet shows a\nlistener for an undo action: \n\n### Kotlin\n\n```kotlin\nclass MyUndoListener : View.OnClickListener {\n\n fun onClick(v: View) {\n // Code to undo the user's last action.\n }\n}\n```\n\n### Java\n\n```java\npublic class MyUndoListener implements View.OnClickListener {\n\n @Override\n public void onClick(View v) {\n\n // Code to undo the user's last action.\n }\n}\n```\n\nUse one of the\n[setAction()](/reference/com/google/android/material/snackbar/Snackbar#setAction(int, android.view.View.OnClickListener))\nmethods to attach the listener to your `Snackbar`. Attach the\nlistener before you call\n[show()](/reference/com/google/android/material/snackbar/BaseTransientBottomBar#show()),\nas shown in this code sample: \n\n### Kotlin\n\n```kotlin\nval mySnackbar = Snackbar.make(findViewById(R.id.myCoordinatorLayout),\n R.string.email_archived, Snackbar.LENGTH_SHORT)\nmySnackbar.setAction(R.string.undo_string, MyUndoListener())\nmySnackbar.show()\n```\n\n### Java\n\n```java\nSnackbar mySnackbar = Snackbar.make(findViewById(R.id.myCoordinatorLayout),\n R.string.email_archived, Snackbar.LENGTH_SHORT);\nmySnackbar.setAction(R.string.undo_string, new MyUndoListener());\nmySnackbar.show();\n```\nIf you are using [Jetpack Compose](/jetpack/compose), you can show a [SnackbarHost](/reference/kotlin/androidx/compose/material/package-summary#SnackbarHost(androidx.compose.material.SnackbarHostState,androidx.compose.ui.Modifier,kotlin.Function1)), as shown in the following example: \n\n### Kotlin\n\n```kotlin\n override fun onCreate(savedInstanceState: Bundle?) {\n\n super.onCreate(savedInstanceState)\n\n setContent {\n DACPlaygroundTheme {\n val snackbarHostState = remember { SnackbarHostState() }\n val scope = rememberCoroutineScope()\n Scaffold(\n snackbarHost = { SnackbarHost(snackbarHostState) },\n content = { padding -\u003e\n Button(\n modifier = Modifier.padding(padding),\n onClick = {\n scope.launch {\n snackbarHostState.showSnackbar(\n message = \"1 item removed\",\n actionLabel = \"UNDO\",\n duration = SnackbarDuration.Short\n ).run {\n when (this) {\n Dismissed -\u003e Log.d(\"SNACKBAR\", \"Dismissed\")\n ActionPerformed -\u003e Log.d(\"SNACKBAR\", \"UNDO CLICKED\")\n }\n }\n }\n }\n ) { Text(\"Show snackbar\") }\n }\n )\n }\n }\n }\n \n```\n| **Note:** A `Snackbar` automatically goes away after a short time, so the user might not see the message or have a chance to tap the button. For this reason, offer other ways to perform `Snackbar` actions."]]