पिछले पेज पर वापस जाने के जेस्चर का इस्तेमाल करने की सुविधा जोड़ें

पहली इमेज. फ़ोन पर, अनुमानित बैक जेस्चर के लुक और फ़ील का मॉकअप

'पीछे जाने पर झलक दिखाने वाला हाथ का जेस्चर', जेस्चर नेविगेशन की एक सुविधा है. इसकी मदद से, उपयोगकर्ताओं को यह झलक दिखती है कि स्क्रीन पर पीछे की ओर स्वाइप करने पर वे कहां पहुंचेंगे.

उदाहरण के लिए, पिछले पेज पर जाने के लिए हाथ के जेस्चर का इस्तेमाल करने पर, आपके ऐप्लिकेशन के पीछे होम स्क्रीन की ऐनिमेशन वाली झलक दिख सकती है. जैसा कि पहली इमेज में दिखाए गए मॉकअप में दिखाया गया है.

Android 15 से, प्रिडिक्टिव बैक ऐनिमेशन के लिए डेवलपर का विकल्प अब उपलब्ध नहीं है. बैक-टू-होम, क्रॉस-टास्क, और क्रॉस-ऐक्टिविटी जैसे सिस्टम ऐनिमेशन, अब उन ऐप्लिकेशन के लिए दिखते हैं जिन्होंने पूरी तरह या किसी गतिविधि के लेवल पर, अनुमानित बैक जेस्चर का विकल्प चुना है.

इस पेज के अगले सेक्शन में बताए गए तरीके से, होम पेज पर वापस ले जाने वाले इस ऐनिमेशन की जांच की जा सकती है.

अनुमानित बैक जेस्चर की सुविधा इस्तेमाल करने के लिए, आपको अपने ऐप्लिकेशन को अपडेट करना होगा. इसके लिए, OnBackPressedCallback AppCompat 1.6.0-alpha05 (AndroidX) या इसके बाद के वर्शन वाले एपीआई का इस्तेमाल करें. इसके अलावा, OnBackInvokedCallback प्लैटफ़ॉर्म एपीआई का इस्तेमाल भी किया जा सकता है. ज़्यादातर ऐप्लिकेशन, पुराने सिस्टम के साथ काम करने वाले AndroidX API का इस्तेमाल करते हैं.

इस अपडेट में, बैक नेविगेशन को ठीक से इंटरसेप्ट करने के लिए माइग्रेशन पाथ उपलब्ध कराया गया है. इसमें KeyEvent.KEYCODE_BACK से बैक इंटरसेप्शन को बदला जा सकता है. साथ ही, सिस्टम के पिछले एपीआई का इस्तेमाल करके, Activity और Dialog जैसे onBackPressed तरीकों वाली क्लास को भी बदला जा सकता है.

कोडलैब और Google I/O वीडियो

इस पेज पर इस दस्तावेज़ का इस्तेमाल करने के अलावा, हमारे कोडलैब की सुविधा को आज़माएं. यह AndroidX Activity API का इस्तेमाल करके, अनुमानित बैक जेस्चर को मैनेज करने वाले वेबव्यू के इस्तेमाल के सामान्य उदाहरण को लागू करता है.

आपके पास Google I/O का हमारा वीडियो देखने का विकल्प भी है. इसमें, AndroidX और प्लैटफ़ॉर्म एपीआई को लागू करने के अन्य उदाहरणों के बारे में बताया गया है.

ऐसे ऐप्लिकेशन को अपडेट करना जो डिफ़ॉल्ट 'वापस जाएं' नेविगेशन का इस्तेमाल करता है

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

अगर आपका ऐप्लिकेशन फ़्रैगमेंट या नेविगेशन कॉम्पोनेंट का इस्तेमाल करता है, तो AndroidX Activity 1.6.0-alpha05 या इसके बाद वाले वर्शन में भी अपग्रेड करें.

कस्टम बैक नेविगेशन का इस्तेमाल करने वाले ऐप्लिकेशन को अपडेट करें

अगर आपका ऐप्लिकेशन, 'वापस जाएं' बटन के काम करने का कस्टम तरीका लागू करता है, तो माइग्रेशन के अलग-अलग पाथ होते हैं. ये इस बात पर निर्भर करते हैं कि ऐप्लिकेशन, AndroidX का इस्तेमाल करता है या नहीं और वह 'वापस जाएं' नेविगेशन को कैसे मैनेज करता है.

आपका ऐप्लिकेशन, AndroidX का इस्तेमाल करता है आपका ऐप्लिकेशन, बैक नेविगेशन को कैसे मैनेज करता है माइग्रेशन के लिए सुझाया गया पाथ (इस पेज पर लिंक)
हां AndroidX API AndroidX के मौजूदा वर्शन को माइग्रेट करना
काम न करने वाले प्लैटफ़ॉर्म एपीआई ऐसे AndroidX ऐप्लिकेशन को AndroidX एपीआई पर माइग्रेट करना जिसमें बैक नेविगेशन के लिए काम न करने वाले एपीआई शामिल हैं
नहीं ऐसे प्लैटफ़ॉर्म एपीआई जो काम नहीं करते, लेकिन माइग्रेट किए जा सकते हैं ऐप्लिकेशन को प्लैटफ़ॉर्म एपीआई पर माइग्रेट करना, जो बैक नेविगेशन के लिए काम न करने वाले एपीआई का इस्तेमाल करता है
इस प्लैटफ़ॉर्म के एपीआई काम नहीं करते, लेकिन माइग्रेट नहीं हो पा रहे जब तक यह सुविधा ज़रूरी नहीं हो जाती, तब तक ऑप्ट-इन करने की प्रक्रिया को रोकें

AndroidX के पिछले नेविगेशन को माइग्रेट करना

इस इस्तेमाल के उदाहरण का सबसे ज़्यादा इस्तेमाल किया जाता है. साथ ही, इसका सबसे ज़्यादा सुझाव दिया जाता है. यह नए या मौजूदा ऐप्लिकेशन पर लागू होता है, जो OnBackPressedDispatcher का इस्तेमाल करके कस्टम जेस्चर वाले नेविगेशन हैंडलिंग की सुविधा देते हैं. इस बारे में पसंद के मुताबिक बैक नेविगेशन उपलब्ध कराना सेक्शन में बताया गया है.

अगर आपका ऐप्लिकेशन इस कैटगरी में आता है, तो ऐप्लिकेशन में, ऐप्लिकेशन के पिछले पेज पर जाने के लिए, उपयोगकर्ता के हाथ के जेस्चर का अनुमान लगाने की सुविधा जोड़ने के लिए यह तरीका अपनाएं:

  1. यह पक्का करने के लिए कि पहले से ही OnBackPressedDispatcher एपीआई (जैसे, फ़्रैगमेंट और नेविगेशन कॉम्पोनेंट) का इस्तेमाल करने वाले एपीआई, अनुमानित बैक जेस्चर के साथ आसानी से काम करें, AndroidX Activity 1.6.0-alpha05 पर अपग्रेड करें.

    // In your build.gradle file:
    dependencies {
    
    // Add this in addition to your other dependencies
    implementation "androidx.activity:activity:1.6.0-alpha05"
    
  2. इस पेज पर दी गई जानकारी के मुताबिक, पीछे जाने के अनुमानित जेस्चर के लिए ऑप्ट-इन करें.

AndroidX ऐप्लिकेशन को AndroidX एपीआई पर माइग्रेट करना, जिसमें बैक नेविगेशन के लिए काम न करने वाले एपीआई शामिल हैं

अगर आपका ऐप्लिकेशन AndroidX लाइब्रेरी का इस्तेमाल करता है, लेकिन काम न करने वाले बैक नेविगेशन एपीआई को लागू करता है या उनका रेफ़रंस देता है, तो आपको नए व्यवहार के साथ काम करने के लिए, AndroidX एपीआई का इस्तेमाल करने के लिए माइग्रेट करना होगा.

काम न करने वाले एपीआई को AndroidX एपीआई पर माइग्रेट करने के लिए:

  1. अपने सिस्टम के बैक हैंडलिंग लॉजिक को AndroidX के OnBackPressedDispatcher पर माइग्रेट करें. इसके लिए, OnBackPressedCallback को लागू करें. ज़्यादा जानकारी के लिए, पसंद के मुताबिक बैक नेविगेशन उपलब्ध कराना लेख पढ़ें.

  2. जब आप पीछे के जेस्चर को रोकने के लिए तैयार हों, तो OnBackPressedCallback को बंद करें.

  3. OnBackPressed या KeyEvent.KEYCODE_BACK की मदद से, बैक इवेंट को इंटरसेप्ट करना बंद करें.

  4. AndroidX Activity 1.6.0-alpha05 पर अपग्रेड करना न भूलें.

    // In your build.gradle file:
    dependencies {
    
    // Add this in addition to your other dependencies
    implementation "androidx.activity:activity:1.6.0-alpha05"
    
  5. ऐप्लिकेशन को माइग्रेट करने के बाद, होम स्क्रीन पर वापस जाने के लिए सिस्टम ऐनिमेशन देखने के लिए, 'वापस जाने के लिए जेस्चर का सुझाव' सुविधा के लिए ऑप्ट-इन करें. इसके बारे में इस पेज पर बताया गया है.

काम न करने वाले बैक नेविगेशन एपीआई का इस्तेमाल करने वाले ऐप्लिकेशन को प्लैटफ़ॉर्म एपीआई पर माइग्रेट करें

अगर आपका ऐप्लिकेशन AndroidX लाइब्रेरी का इस्तेमाल नहीं कर सकता और इसके बजाय, काम न करने वाले एपीआई का इस्तेमाल करके, कस्टम बैक नेविगेशन को लागू करता है या उसका रेफ़रंस देता है, तो आपको OnBackInvokedCallback प्लैटफ़ॉर्म एपीआई पर माइग्रेट करना होगा.

काम न करने वाले एपीआई को प्लैटफ़ॉर्म एपीआई पर माइग्रेट करने के लिए, यह तरीका अपनाएं:

  1. Android 13 या उसके बाद के वर्शन वाले डिवाइसों पर, नए OnBackInvokedCallback एपीआई का इस्तेमाल करें. साथ ही, Android 12 या उससे पहले के वर्शन वाले डिवाइसों पर, काम न करने वाले एपीआई का इस्तेमाल करें.

  2. onBackInvokedDispatcher की मदद से, OnBackInvokedCallback में अपना कस्टम बैक लॉजिक रजिस्टर करें. इससे मौजूदा गतिविधि पूरी नहीं हो पाती. साथ ही, जब उपयोगकर्ता सिस्टम के 'वापस जाएं' नेविगेशन को पूरा कर लेता है, तो आपके कॉलबैक को 'वापस जाएं' ऐक्शन पर प्रतिक्रिया देने का मौका मिलता है.

  3. OnBackInvokedCallback को अनरजिस्टर करें, ताकि 'वापस जाएं' जेस्चर को इंटरसेप्ट करना बंद किया जा सके. ऐसा न करने पर, सिस्टम पर वापस जाने वाले नेविगेशन का इस्तेमाल करते समय, उपयोगकर्ताओं को अनचाहा व्यवहार दिख सकता है—उदाहरण के लिए, व्यू के बीच में "अटकना" और उन्हें आपके ऐप्लिकेशन से ज़बरदस्ती बंद करना.

    onBackPressed से लॉजिक को माइग्रेट करने का तरीका यहां बताया गया है:

    Kotlin

    @Override
    fun onCreate() {
        if (BuildCompat.isAtLeastT()) {
            onBackInvokedDispatcher.registerOnBackInvokedCallback(
                OnBackInvokedDispatcher.PRIORITY_DEFAULT
            ) {
                /**
                 * onBackPressed logic goes here. For instance:
                 * Prevents closing the app to go home screen when in the
                 * middle of entering data to a form
                 * or from accidentally leaving a fragment with a WebView in it
                 *
                 * Unregistering the callback to stop intercepting the back gesture:
                 * When the user transitions to the topmost screen (activity, fragment)
                 * in the BackStack, unregister the callback by using
                 * OnBackInvokeDispatcher.unregisterOnBackInvokedCallback
                 * (https://developer.android.com/reference/kotlin/android/window/OnBackInvokedDispatcher#unregisteronbackinvokedcallback)
                 */
            }
        }
    }

    Java

    @Override
    void onCreate() {
      if (BuildCompat.isAtLeastT()) {
        getOnBackInvokedDispatcher().registerOnBackInvokedCallback(
            OnBackInvokedDispatcher.PRIORITY_DEFAULT,
            () -> {
              /**
               * onBackPressed logic goes here - For instance:
               * Prevents closing the app to go home screen when in the
               * middle of entering data to a form
               * or from accidentally leaving a fragment with a WebView in it
               *
               * Unregistering the callback to stop intercepting the back gesture:
               * When the user transitions to the topmost screen (activity, fragment)
               * in the BackStack, unregister the callback by using
               * OnBackInvokeDispatcher.unregisterOnBackInvokedCallback
               * (https://developer.android.com/reference/kotlin/android/view/OnBackInvokedDispatcher#unregisteronbackinvokedcallback)
               */
            }
        );
      }
    }
  4. Android 13 और उसके बाद के वर्शन के लिए, OnBackPressed या KeyEvent.KEYCODE_BACK की मदद से बैक इवेंट रोकना बंद करें.

  5. ऐप्लिकेशन को माइग्रेट करने के बाद, 'वापस जाएं' जेस्चर के सुझाव की सुविधा के लिए ऑप्ट-इन करें (जैसा कि इस पेज पर बताया गया है), ताकि OnBackInvokedCallback लागू हो सके.

OnBackInvokedCallback को PRIORITY_DEFAULT या PRIORITY_OVERLAY के साथ रजिस्टर किया जा सकता है. यह सुविधा, मिलते-जुलते AndroidX OnBackPressedCallback में उपलब्ध नहीं है. PRIORITY_OVERLAY के साथ कॉलबैक रजिस्टर करना, कुछ मामलों में मददगार होता है.

यह तब लागू होता है, जब onKeyPreIme() से माइग्रेट किया जाता है और आपके कॉलबैक को खुले IME के बजाय, बैक जेस्चर की ज़रूरत होती है. IME खोले जाने पर, PRIORITY_DEFAULT के साथ कॉलबैक रजिस्टर करते हैं. PRIORITY_OVERLAY के साथ अपना कॉलबैक रजिस्टर करें, ताकि यह पक्का किया जा सके कि OnBackInvokedDispatcher, खुले हुए IME के बजाय आपके कॉलबैक पर बैक जेस्चर भेजे.

'पीछे जाने पर झलक दिखाने वाला हाथ का जेस्चर' सुविधा के लिए ऑप्ट-इन करना

अपने मामले के आधार पर, ऐप्लिकेशन को अपडेट करने का तरीका तय करने के बाद, ऐप्लिकेशन में 'वापस जाने के लिए अनुमानित जेस्चर' की सुविधा के लिए ऑप्ट-इन करें.

ऑप्ट-इन करने के लिए, AndroidManifest.xml में <application> टैग में, android:enableOnBackInvokedCallback फ़्लैग को true पर सेट करें.

<application
    ...
    android:enableOnBackInvokedCallback="true"
    ... >
...
</application>

अगर कोई वैल्यू सबमिट नहीं की जाती है, तो यह डिफ़ॉल्ट रूप से false पर सेट हो जाती है और ये काम करती है:

  • इससे, पिछले पेज पर जाने के लिए हाथ के जेस्चर के सिस्टम ऐनिमेशन की सुविधा बंद हो जाती है.
  • OnBackInvokedCallback को अनदेखा करता है, लेकिन OnBackPressedCallback कॉल काम करना जारी रखते हैं.

गतिविधि के लेवल पर ऑप्ट-इन करना

Android 14 से, android:enableOnBackInvokedCallback फ़्लैग की मदद से, गतिविधि के लेवल पर सिस्टम के अनुमानित ऐनिमेशन के लिए ऑप्ट-इन किया जा सकता है. इस व्यवहार की वजह से, कई गतिविधियों वाले बड़े ऐप्लिकेशन को, अनुमानित वापसी वाले जेस्चर पर माइग्रेट करना आसान हो जाता है. Android 15 में, अनुमानित बैक बटन अब डेवलपर विकल्प के पीछे नहीं है. ऐप्लिकेशन, अनुमानित बैकअप के लिए पूरी तरह या गतिविधि के लेवल पर ऑप्ट इन कर सकते हैं.

यहां दिए गए कोड में, MainActivity से होम स्क्रीन पर वापस जाने वाले सिस्टम ऐनिमेशन को चालू करने के लिए, enableOnBackInvokedCallback का इस्तेमाल करने का उदाहरण दिया गया है:

<manifest ...>
    <application . . .

        android:enableOnBackInvokedCallback="false">

        <activity
            android:name=".MainActivity"
            android:enableOnBackInvokedCallback="true"
            ...
        </activity>
        <activity
            android:name=".SecondActivity"
            android:enableOnBackInvokedCallback="false"
            ...
        </activity>
    </application>
</manifest>

पिछले उदाहरण में, ".SecondActivity" के लिए android:enableOnBackInvokedCallback=true सेट करने पर, क्रॉस-ऐक्टिविटी सिस्टम ऐनिमेशन चालू हो जाता है.

android:enableOnBackInvokedCallback फ़्लैग का इस्तेमाल करते समय, इन बातों का ध्यान रखें:

  • android:enableOnBackInvokedCallback=false सेटिंग से, ऐक्टिविटी लेवल या ऐप्लिकेशन लेवल पर, अनुमानित बैक ऐनिमेशन बंद हो जाते हैं. यह इस बात पर निर्भर करता है कि आपने टैग कहां सेट किया है. साथ ही, यह सिस्टम को OnBackInvokedCallback प्लैटफ़ॉर्म एपीआई के कॉल को अनदेखा करने का निर्देश देता है. हालांकि, OnBackPressedCallback पर कॉल चलते रहेंगे, क्योंकि OnBackPressedCallback पुराने सिस्टम के साथ काम करता है और onBackPressed एपीआई को कॉल करता है, जो Android 13 से पहले के वर्शन के साथ काम नहीं करता.
  • ऐप्लिकेशन के लेवल पर enableOnBackInvokedCallback फ़्लैग सेट करने से, ऐप्लिकेशन में सभी गतिविधियों की डिफ़ॉल्ट वैल्यू बन जाती है. गतिविधि के लेवल पर फ़्लैग सेट करके, हर गतिविधि के लिए डिफ़ॉल्ट वैल्यू बदली जा सकती है, जैसा कि पिछले कोड के उदाहरण में दिखाया गया है.

कॉलबैक के सबसे सही तरीके

यहां, सिस्टम के बैक कॉलबैक का इस्तेमाल करने के सबसे सही तरीके बताए गए हैं: BackHandler (लिखने के लिए), OnBackPressedCallback या OnBackInvokedCallback.

हर कॉलबैक को चालू और बंद करने वाली यूज़र इंटरफ़ेस (यूआई) स्थिति तय करें

यूज़र इंटरफ़ेस (यूआई) की स्थिति, यूज़र इंटरफ़ेस (यूआई) की जानकारी देने वाली प्रॉपर्टी है. हमारा सुझाव है कि आप इन हाई-लेवल चरणों का पालन करें.

  1. यूज़र इंटरफ़ेस (यूआई) की उस स्थिति का पता लगाएं जो हर कॉलबैक को चालू और बंद करती है.

  2. निगरानी करने वाला डेटा होल्डर टाइप, जैसे कि StateFlow या कंपोज़ स्टेट का इस्तेमाल करके यह स्थिति तय करें. साथ ही, स्थिति बदलने पर कॉलबैक को चालू या बंद करें.

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

यूज़र इंटरफ़ेस (यूआई) लॉजिक के लिए, सिस्टम के बैक कॉलबैक का इस्तेमाल करना

यूज़र इंटरफ़ेस (यूआई) लॉजिक बताता है कि यूज़र इंटरफ़ेस (यूआई) कैसे दिखाया जाए. यूआई लॉजिक चलाने के लिए, सिस्टम बैक कॉलबैक का इस्तेमाल करें. जैसे, कोई पॉप-अप दिखाना या ऐनिमेशन चलाना.

अगर आपका ऐप्लिकेशन, सिस्टम के बैक कॉलबैक को चालू करता है, तो प्रिडिक्टिव ऐनिमेशन नहीं चलते और आपको बैक इवेंट को मैनेज करना होगा. सिर्फ़ यूज़र इंटरफ़ेस (यूआई) से जुड़े लॉजिक को चलाने के लिए, कॉलबैक न बनाएं.

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

  • ऐक्टिविटी से ऐक्टिविटी या फ़्रैगमेंट से ऐक्टिविटी के मामलों के लिए, लॉग करें कि onDestroy में मौजूद isFinishing, ऐक्टिविटी के लाइफ़साइकल में true है या नहीं.
  • फ़्रैगमेंट-टू-फ़्रैगमेंट के मामलों के लिए, लॉग करें कि फ़्रैगमेंट के व्यू लाइफ़साइकल में, onDestroy में isRemoving सही है या नहीं. इसके अलावा, FragmentManager.OnBackStackChangedListener में onBackStackChangeStarted या onBackStackChangeCommitted तरीकों का इस्तेमाल करके भी लॉग इन किया जा सकता है.

Compose के केस के लिए, Compose के डेस्टिनेशन से जुड़े ViewModel के onCleared() कॉलबैक में लॉग करें. यह जानने का सबसे अच्छा तरीका है कि मैसेज लिखने के लिए चुना गया डेस्टिनेशन, बैक स्टैक से कब हटाया गया और मिटाया गया.

एक ही ज़िम्मेदारी वाले कॉलबैक बनाना

डिस्पैचर में एक से ज़्यादा कॉलबैक जोड़े जा सकते हैं. कॉलबैक को एक स्टैक में जोड़ा जाता है. इसमें, आखिरी बार जोड़ा गया चालू कॉलबैक, अगले बैक जेस्चर को हैंडल करता है. हर बैक जेस्चर के लिए एक कॉलबैक होता है.

अगर किसी कॉलबैक की एक ही ज़िम्मेदारी है, तो उसे चालू या बंद करने की स्थिति को मैनेज करना आसान होता है. उदाहरण के लिए:

किसी स्टैक में कॉलबैक का क्रम.
दूसरी इमेज. कॉलबैक स्टैक डायग्राम.

दूसरी इमेज में दिखाया गया है कि स्टैक में एक से ज़्यादा कॉलबैक कैसे किए जा सकते हैं. इनमें से हर एक कॉलबैक को एक वैल्यू दी जाती है. कोई कॉलबैक सिर्फ़ तब चलता है, जब स्टैक में उसके ऊपर मौजूद कॉलबैक बंद हों. इस उदाहरण में, जब उपयोगकर्ता किसी फ़ॉर्म में डेटा डालता है, तो "क्या आपको यकीन है..." कॉलबैक चालू होता है. इसके अलावा, किसी भी दूसरी स्थिति में यह कॉलबैक बंद रहता है. जब उपयोगकर्ता फ़ॉर्म से बाहर निकलने के लिए, पीछे की ओर स्वाइप करता है, तो कॉलबैक की मदद से पुष्टि करने वाला डायलॉग बॉक्स खुलता है.

दूसरे कॉलबैक में, ऐसा मटीरियल कॉम्पोनेंट शामिल किया जा सकता है जो अनुमानित स्क्रीन पर वापस जाने की सुविधा के साथ काम करता हो. इसके अलावा, इसमें Progress API का इस्तेमाल करके AndroidX ट्रांज़िशन या कोई अन्य कस्टम कॉलबैक भी शामिल किया जा सकता है.

childFragmentManager का कॉलबैक तब चलता है, जब ऊपर दिए गए कॉलबैक बंद हों और इस FragmentManager के लिए बैक स्टैक खाली न हो, जहां childFragmentManager किसी फ़्रैगमेंट में अटैच हो. इस उदाहरण में, यह इंटरनल कॉलबैक बंद है.

इसी तरह, अगर ऊपर दिए गए कॉलबैक बंद हैं और supportFragmentManager का स्टैक खाली नहीं है, तो supportFragmentManager का इंटरनल कॉलबैक चलता है. नेविगेशन के लिए FragmentManager या NavigationComponent का इस्तेमाल करने पर, यह व्यवहार एक जैसा रहता है, क्योंकि NavigationComponent, FragmentManager पर निर्भर करता है. इस उदाहरण में, यह कॉलबैक तब चलता है, जब उपयोगकर्ता ने फ़ॉर्म में टेक्स्ट नहीं डाला होता, जिसकी वजह से "क्या आपको यकीन है..." कॉलबैक बंद होता है.

आखिर में, super.onBackPressed()सिस्टम-लेवल का कॉलबैक है, जो ऊपर दिए गए कॉलबैक के बंद होने पर फिर से चलता है. होम स्क्रीन पर वापस जाने, एक गतिविधि से दूसरी गतिविधि पर जाने, और एक टास्क से दूसरे टास्क पर जाने जैसे सिस्टम ऐनिमेशन को ट्रिगर करने के लिए, supportFragmentManager का बैक स्टैक खाली होना चाहिए, ताकि उसका इंटरनल कॉलबैक बंद हो जाए.

पीछे जाने के लिए हाथ के जेस्चर के ऐनिमेशन की जांच करना

अगर अब भी Android 13 या Android 14 का इस्तेमाल किया जा रहा है, तो पहली इमेज में दिखाए गए बैक-टू-होम ऐनिमेशन की जांच की जा सकती है.

इस ऐनिमेशन की जांच करने के लिए, नीचे दिया गया तरीका अपनाएं:

  1. अपने डिवाइस पर, सेटिंग > सिस्टम > डेवलपर के लिए सेटिंग और टूल पर जाएं.

  2. प्रिडिक्टिव बैक ऐनिमेशन चुनें.

  3. अपडेट किया गया ऐप्लिकेशन लॉन्च करें और बैक जेस्चर का इस्तेमाल करके, यह देखें कि यह कैसे काम करता है.