मैसेज में कार्रवाई जोड़ना

Compose का इस्तेमाल करके मैसेज लिखना
Android के लिए, Jetpack Compose को यूज़र इंटरफ़ेस (यूआई) टूलकिट के तौर पर सुझाया जाता है. Compose में सूचनाएं जोड़ने का तरीका जानें.

उपयोगकर्ता को आपके मैसेज का जवाब देने की सुविधा देने के लिए, किसी Snackbar में कार्रवाई जोड़ी जा सकती है. ऐसा करने पर, Snackbar मैसेज के टेक्स्ट के बगल में एक बटन डालता है. उपयोगकर्ता, बटन पर टैप करके आपकी कार्रवाई को ट्रिगर कर सकता है. उदाहरण के लिए, कोई ईमेल ऐप्लिकेशन, "ईमेल संग्रहित किया गया" मैसेज पर पहले जैसा करें बटन डाल सकता है. अगर उपयोगकर्ता वापस करें बटन पर टैप करता है, तो ऐप्लिकेशन उस ईमेल को संग्रह से वापस ले लेता है.

एक इमेज, जिसमें 'पहले जैसा करें' ऐक्शन बटन वाला स्नैकबार दिखाया गया है
पहला डायग्राम. Snackbar, जिसमें 'पहले जैसा करें' ऐक्शन बटन है. इसकी मदद से, हटाए गए आइटम को वापस लाया जा सकता है.

Snackbar मैसेज में कोई कार्रवाई जोड़ने के लिए, ऐसा लिसनर ऑब्जेक्ट तय करें जो View.OnClickListener इंटरफ़ेस को लागू करता हो. अगर उपयोगकर्ता मैसेज ऐक्शन पर टैप करता है, तो सिस्टम आपके दर्शक के onClick() तरीके को कॉल करता है. उदाहरण के लिए, यह स्निपेट, पहले जैसा करने की कार्रवाई के लिए एक Listener दिखाता है:

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.
    }
}

Snackbar से दर्शकों को जोड़ने के लिए, setAction() के इनमें से किसी एक तरीके का इस्तेमाल करें. 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();
अगर Jetpack Compose का इस्तेमाल किया जा रहा है, तो 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") }
                  }
              )
          }
      }
  }