একটি বার্তা একটি কর্ম যোগ করুন

কম্পোজ পদ্ধতিটি চেষ্টা করুন
অ্যান্ড্রয়েডের জন্য Jetpack Compose হলো প্রস্তাবিত UI টুলকিট। Compose-এ কীভাবে নোটিফিকেশন যোগ করতে হয় তা জানুন।

ব্যবহারকারীকে আপনার বার্তার উত্তর দেওয়ার সুযোগ দিতে আপনি Snackbar একটি অ্যাকশন যোগ করতে পারেন। যখন আপনি এটি করেন, Snackbar বার্তার লেখার পাশে একটি বাটন রাখে এবং ব্যবহারকারী বাটনটিতে ট্যাপ করে আপনার অ্যাকশনটি চালু করতে পারে। উদাহরণস্বরূপ, একটি ইমেল অ্যাপ তার "ইমেল আর্কাইভ করা হয়েছে" বার্তায় একটি আনডু বাটন রাখতে পারে। যদি ব্যবহারকারী আনডু বাটনটিতে ট্যাপ করে, অ্যাপটি ইমেলটিকে আর্কাইভ থেকে ফিরিয়ে নেয়।

একটি ছবিতে আনডু (UNDO) অ্যাকশন বাটনসহ একটি স্নাকবার দেখানো হচ্ছে।
চিত্র ১. একটি Snackbar যেখানে মুছে ফেলা কোনো আইটেম পুনরুদ্ধার করার জন্য একটি আনডু অ্যাকশন বাটন রয়েছে।

একটি Snackbar মেসেজে কোনো অ্যাকশন যোগ করতে, একটি লিসেনার অবজেক্ট সংজ্ঞায়িত করুন যা View.OnClickListener ইন্টারফেসটি ইমপ্লিমেন্ট করে। ব্যবহারকারী মেসেজ অ্যাকশনটিতে ট্যাপ করলে সিস্টেম আপনার লিসেনারের onClick() মেথডটি কল করে। উদাহরণস্বরূপ, এই কোড স্নিপেটটি একটি আনডু অ্যাকশনের জন্য একটি লিসেনার দেখাচ্ছে:

কোটলিন

class MyUndoListener : View.OnClickListener {

  fun onClick(v: View) {
    // Code to undo the user's last action.
  }
}

জাভা

public class MyUndoListener implements View.OnClickListener {

    @Override
    public void onClick(View v) {

        // 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()

জাভা

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();
আপনি যদি 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") }
                  }
              )
          }
      }
  }