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

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

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

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

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

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

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

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

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

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

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

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

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

अगर आपका ऐप्लिकेशन फ़्रैगमेंट या नेविगेशन कॉम्पोनेंट का इस्तेमाल करता है, तो AndroidX ऐक्टिविटी 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 API पर माइग्रेट करना, जिसमें बैक नेविगेशन के लिए काम न करने वाले एपीआई शामिल हैं

अगर आपका ऐप्लिकेशन 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 या Compose State जैसे डेटा होल्डर के टाइप का इस्तेमाल करके, उस स्टेटस को तय करें. साथ ही, स्टेटस में बदलाव होने पर कॉलबैक को चालू या बंद करें.

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

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

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

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

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

  • ऐक्टिविटी से ऐक्टिविटी या फ़्रैगमेंट से ऐक्टिविटी के मामलों के लिए, लॉग करें कि 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 में दिखाए गए, होम पेज पर वापस जाने वाले ऐनिमेशन की जांच की जा सकती है.

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

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

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

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