उपयोगकर्ता को आपके मैसेज का जवाब देने की सुविधा देने के लिए, Snackbar में कोई कार्रवाई जोड़ी जा सकती है. ऐसा करने पर, Snackbar मैसेज के टेक्स्ट के बगल में एक बटन जोड़ देता है. इसके बाद, उपयोगकर्ता उस बटन पर टैप करके आपकी कार्रवाई को ट्रिगर कर सकता है. उदाहरण के लिए, कोई ईमेल ऐप्लिकेशन "ईमेल संग्रहित किया गया" मैसेज पर बदलाव पहले जैसा करें बटन रख सकता है. अगर उपयोगकर्ता undo बटन पर टैप करता है, तो ऐप्लिकेशन ईमेल को वापस संग्रह से बाहर ले जाता है.
Snackbar के साथ 'पहले जैसा करें' ऐक्शन बटन दिया गया है.
Snackbar मैसेज में कोई कार्रवाई जोड़ने के लिए, एक लिसनर ऑब्जेक्ट तय करें. यह ऑब्जेक्ट, View.OnClickListener इंटरफ़ेस लागू करता है. अगर उपयोगकर्ता मैसेज पर मौजूद कार्रवाई पर टैप करता है, तो सिस्टम आपके लिसनर के onClick() तरीके को कॉल करता है. उदाहरण के लिए, इस स्निपेट में, बदलाव को पहले जैसा करने की कार्रवाई के लिए लिसनर दिखाया गया है:
class MyUndoListener : View.OnClickListener { override fun onClick(v: View) { // Code to undo the user's last action. } }
लिसनर को अपने Snackbar से अटैच करने के लिए, setAction() में से किसी एक तरीके का इस्तेमाल करें. 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") } } ) } } }