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

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

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

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

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

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") }
                  }
              )
          }
      }
  }