মেসেজে অ্যাকশন যোগ করা

'কম্পোজ' ফিচার ব্যবহার করে দেখুন
Android-এর জন্য Jetpack Compose হল সাজেস্ট করা UI টুলকিট। Compose-এ কীভাবে বিজ্ঞপ্তি যোগ করতে হয় তা জানুন।

আপনার মেসেজের উত্তর দেওয়ার জন্য ব্যবহারকারীকে অনুমতি দিতে, আপনি 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()
আপনি Jetpack Compose ব্যবহার করলে, আপনি একটি 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") }
                }
            )
        }
    }
}