फ़्रैगमेंट

अपने ऐप्लिकेशन को कई स्वतंत्र स्क्रीन में बांटें. ये स्क्रीन, किसी ऐक्टिविटी में होस्ट की जाती हैं.
नया अपडेट स्टेबल रिलीज़ रिलीज़ कैंडिडेट बीटा रिलीज़ ऐल्फ़ा रिलीज़
23 सितंबर, 2026 1.9.1 - - -

डिपेंडेंसी का एलान करना

Fragment पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.

अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:

ग्रूवी

dependencies {
    def fragment_version = "1.9.1"

    // Java language implementation
    implementation "androidx.fragment:fragment:$fragment_version"
    // Kotlin
    implementation "androidx.fragment:fragment-ktx:$fragment_version"
    // Compose
    implementation "androidx.fragment:fragment-compose:$fragment_version"
    // Testing Fragments in Isolation
    debugImplementation "androidx.fragment:fragment-testing-manifest:$fragment_version"
    androidTestImplementation "androidx.fragment:fragment-testing:$fragment_version"
}

Kotlin

dependencies {
    val fragment_version = "1.9.1"

    // Java language implementation
    implementation("androidx.fragment:fragment:$fragment_version")
    // Kotlin
    implementation("androidx.fragment:fragment-ktx:$fragment_version")
    // Compose
    implementation("androidx.fragment:fragment-compose:$fragment_version")
    // Testing Fragments in Isolation
    debugImplementation("androidx.fragment:fragment-testing:$fragment_version")
}

डिपेंडेंसी के बारे में ज़्यादा जानने के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.

सुझाव/राय दें या शिकायत करें

आपके सुझाव, शिकायत या राय से Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या आपके पास इस लाइब्रेरी को बेहतर बनाने के लिए सुझाव हैं, तो हमें बताएं. कृपया नई समस्या सबमिट करने से पहले, इस लाइब्रेरी में शामिल मौजूदा समस्याओं को देखें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या के लिए वोट किया जा सकता है.

नई समस्या दर्ज करने का तरीका

ज़्यादा जानकारी के लिए, Issue Tracker का दस्तावेज़ देखें.

वर्शन 1.9

वर्शन 1.9.1

23 सितंबर, 2026

androidx.fragment:fragment-*:1.9.1 रिलीज़ हो गया है. वर्शन 1.9.1 में ये बदलाव शामिल हैं.

वर्शन 1.9.0

12 अगस्त, 2026

androidx.fragment:fragment-*:1.9.0 रिलीज़ हो गया है. वर्शन 1.9.0 में ये बदलाव शामिल हैं.

1.8.0 के बाद हुए मुख्य बदलाव:

  • Fragment अब ContextAware इंटरफ़ेस लागू करता है. इसका इस्तेमाल, फ़्रैगमेंट अटैच होने पर कोड को लागू करने के लिए किया जा सकता है.
  • AndroidFragment कंपोज़ेबल अब maxLifecycle पैरामीटर स्वीकार करता है. इससे, एंबेड किए गए Fragment के लाइफ़साइकल स्टेटस को सीमित किया जा सकता है.
  • Fragment लाइब्रेरी अब Jetpack Tracing के ज़रिए, लाइफ़साइकल इवेंट की सिस्टम ट्रेसिंग की सुविधा देती है.

वर्शन 1.9.0-rc01

29 जुलाई, 2026

androidx.fragment:fragment-*:1.9.0-rc01 रिलीज़ हो गया है. वर्शन 1.9.0-rc01 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • FragmentScenario.launchInContainer का इस्तेमाल करने पर, टेस्ट किया जा रहा फ़्रैगमेंट अब FragmentContainerView के अंदर होगा. (Ia6273, b/531550353)

वर्शन 1.9.0-alpha02

01 जुलाई, 2026

androidx.fragment:fragment-*:1.9.0-alpha02 रिलीज़ हो गया है. वर्शन 1.9.0-alpha02 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • AndroidFragment कंपोज़ेबल में maxLifecycle पैरामीटर जोड़ें. इससे, एम्बेड किए गए Fragment की लाइफ़साइकल की स्थिति को सीमित किया जा सकता है. इससे आपको पेजर या टैब जैसे जटिल यूज़र इंटरफ़ेस (यूआई) सेटअप में इसके व्यवहार पर बेहतर कंट्रोल मिलता है. (Ie99b5, b/526109804)
  • Fragment लाइब्रेरी अब Jetpack Tracing की मदद से, लाइफ़साइकल इवेंट की सिस्टम ट्रेसिंग की सुविधा देती है. (Ibc63b, b/112161409)

वर्शन 1.9.0-alpha01

17 जून, 2026

androidx.fragment:fragment-*:1.9.0-alpha01 रिलीज़ हो गया है. वर्शन 1.9.0-alpha01 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • Fragment अब ContextAware इंटरफ़ेस लागू करता है. इसका इस्तेमाल, फ़्रैगमेंट अटैच होने पर कोड को एक्ज़ीक्यूट करने के लिए किया जा सकता है. (I38019, b/477255355)

गड़बड़ियां ठीक की गईं

  • फ़्रैगमेंट में क्रैश होने की समस्या को ठीक किया गया है. यह समस्या तब होती थी, जब अनुमानित बैक जेस्चर के दौरान ऐक्टिविटी को बैकग्राउंड में भेजा जाता था. (I55734, b/389589678)
  • UnsafeFragmentLifecycleObserverDetector अब कंपोज़िशन में नहीं चलता. (Ic4176, b/501504696)
  • [Fragment 1.8.9 से] ऐसी समस्या को ठीक किया गया है जिसमें अनुमानित बैक जेस्चर को रद्द करने पर, ऐनिमेटर का इस्तेमाल करते समय, बाद के जेस्चर को सही तरीके से ऐनिमेट नहीं किया जाता था. (I0a400, b/384765586)
  • [Fragment 1.8.9 से] ऐसी गड़बड़ी को ठीक किया गया है जिसमें setMaxLifecycle और popBackStack के कॉम्बिनेशन की वजह से, टॉप फ़्रैगमेंट को RESUMED पर ले जाने में समस्या आ सकती थी. (I3448b, b/406127576)
  • [Fragment 1.8.8 से] ऐसी समस्या को ठीक किया गया है जिसमें setMaxLifecycle(Lifecycle.State.INITIALIZED) का इस्तेमाल करके जोड़े गए फ़्रैगमेंट की स्थिति को सेव करते समय, FragmentManager क्रैश हो जाता था. ये फ़्रैगमेंट, onCreate() से कभी नहीं गुज़रे. इसलिए, अब इनमें कोई भी स्थिति सेव नहीं की गई है और न ही onSaveInstanceState() को कॉल किया गया है. (I6e37a, b/408163315)
  • [Fragment 1.8.7 से] FragmentManager के सही स्थिति में न होने की समस्या को ठीक किया गया है. यह समस्या, एक ही फ़्रेम में पॉप और बदलने की कार्रवाइयां करने के बाद होती थी. इससे, पीछे जाने पर झलक दिखाने वाले हाथ के जेस्चर की सुविधा के साथ क्रैश हो सकता था. (I50ad1, b/380288461)
  • [Fragment 1.8.6 से] FragmentContainerView के setOnApplyWindowInsetsListener override में अब null लिसनर का इस्तेमाल किया जा सकता है. (I575f0, b/282790626)
  • [Fragment 1.8.5 से] IllegalStateException को ठीक किया गया है. यह saveBackStack से सिर्फ़ तब ट्रिगर होता था, जब पीछे जाने पर झलक दिखाने वाले हाथ के जेस्चर को रद्द कर दिया जाता था या उसमें रुकावट आ जाती थी. (I3387d, b/342419080)
  • [Fragment 1.8.4 से] AndroidFragment के उस UninitializedPropertyAccessException को ठीक किया गया है जिसका इस्तेमाल AndroidFragment इंस्टेंस कर रहा है. ऐसा तब होता है, जब क्लास को डाइनैमिक तरीके से स्वैप किया जाता है. (I12dea, b/365578408)
  • [Fragment 1.8.4 से] उस समस्या को ठीक किया गया है जिसमें सिस्टम के बैक बटन को तेज़ी से दबाने या तेज़ी से बैक जेस्चर करने पर, फ़्रैगमेंट क्रैश हो जाते थे. (Ibc038, b/364804225, b/364914301)
  • [Fragment 1.8.4 से] फ़्रैगमेंट में एक समस्या ठीक की गई है. इसमें अनुमानित बैक जेस्चर को रोकने पर, फ़्रैगमेंट मैनेजर को अनडिफ़ाइंड स्थिति में भेज दिया जाता था. साथ ही, गलत फ़्रैगमेंट भी दिखता था. (If82e2, b/338624457)
  • [Fragment 1.8.3 से] AndroidFragment अब क्रैश नहीं होता. ऐसा तब होता है, जब इसे कंपोज़िशन में जोड़ा जाता है. वहीं, इसमें शामिल गतिविधि/फ़्रैगमेंट की स्थिति पहले से ही सेव होती है. (I985e9, b/356643968)
  • [Fragment 1.8.2 से] FragmentManager के पास लंबित कार्रवाइयां होने पर, सिस्टम बैक को ट्रिगर करने से अब आउट ऑफ़ बाउंड अपवाद नहीं होगा. (I9ba32, b/342316801)
  • [Fragment 1.8.2 से] AndroidFragment अब उन मामलों को ठीक से हैंडल करता है जहां पैरंट फ़्रैगमेंट को फ़्रैगमेंट बैक स्टैक पर रखा जाता है. इससे उस फ़्रैगमेंट पर वापस जाने पर, 'No view found for id' से जुड़ी समस्याओं से बचा जा सकता है. (I94608, b/347706985)
  • [Fragment 1.8.2 से] FragmentTransaction.add तरीके से जोड़े गए फ़्रैगमेंट, अब ViewGroup लेने के बाद onContainerAvailable तक इंतज़ार करते हैं. इसके बाद, वे onStart() पर आगे बढ़ते हैं. इससे उस एपीआई का इस्तेमाल करने वाले लोगों पर असर पड़ता है. जैसे, AndroidFragment. अब यह AndroidFragment के कंपोज़िशन में फिर से शामिल होने का इंतज़ार करता है. इसके बाद, इसे onStart() के ज़रिए आगे बढ़ाया जाता है. (I94608, b/347706985)
  • [Fragment 1.8.1 से] उस समस्या को ठीक किया गया है जिसमें कंटेनर के बिना फ़्रैगमेंट, अनुमानित बैक जेस्चर शुरू करने पर तुरंत DESTROYED हो जाते थे. (If6b83, b/345244539)

बाहरी योगदान

  • fragment-ktx को फ़्रैगमेंट लाइब्रेरी में मर्ज करें. सभी Kotlin एक्सटेंशन अब मुख्य फ़्रैगमेंट आर्टफ़ैक्ट का हिस्सा हैं. fragment-ktx अब कंपैटिबिलिटी के लिए एक खाली आर्टफ़ैक्ट है. धन्यवाद, जैक व्हार्टन! (Idabaa)

वर्शन 1.8

वर्शन 1.8.9

13 अगस्त, 2025

androidx.fragment:fragment-*:1.8.9 रिलीज़ हो गया है. वर्शन 1.8.9 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • हमने उस समस्या को ठीक कर दिया है जिसकी वजह से, अनुमानित बैक जेस्चर को रद्द करने पर, ऐनिमेटर का इस्तेमाल करते समय, बाद का जेस्चर सही तरीके से ऐनिमेट नहीं होता था. (I0a400, b/384765586)
  • उस गड़बड़ी को ठीक किया गया है जिसमें setMaxLifecycle और popBackStack के कॉम्बिनेशन की वजह से, टॉप फ़्रैगमेंट को RESUMED पर ले जाने में समस्या आ सकती थी. (I3448b, b/406127576)

वर्शन 1.8.8

4 जून, 2025

androidx.fragment:fragment-*:1.8.8 रिलीज़ हो गया है. वर्शन 1.8.8 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • उस समस्या को ठीक कर दिया गया है जिसकी वजह से setMaxLifecycle(Lifecycle.State.INITIALIZED) का इस्तेमाल करके जोड़े गए फ़्रैगमेंट की स्थिति को सेव करते समय FragmentManager क्रैश हो जाता था. इन फ़्रैगमेंट को कभी onCreate() नहीं किया गया. इसलिए, अब इनमें कोई भी स्थिति सेव नहीं की गई है और न ही onSaveInstanceState() को कॉल किया गया है. (I6e37a)

वर्शन 1.8.7

20 मई, 2025

androidx.fragment:fragment-*:1.8.7 रिलीज़ हो गया है. वर्शन 1.8.7 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • हमने एक समस्या को ठीक किया है. इस समस्या में, एक ही फ़्रेम में पॉप और बदलने की कार्रवाइयों के बाद FragmentManager सही स्थिति में नहीं था. इससे popBackStack या अनुमानित बैक जेस्चर के ज़रिए बैकस्टैक को पॉप करने पर क्रैश हो सकता था. (I50ad1)
  • AndroidX ट्रांज़िशन का इस्तेमाल करने की वजह से होने वाली क्रैश की समस्या को ठीक किया गया है. इस समस्या में, फ़्रैगमेंट ट्रांज़ैक्शन को लगातार तेज़ी से करने पर, शुरू न हुए ट्रांज़िशन को रद्द करने की कोशिश की जाती है. साथ ही, AndroidX ट्रांज़िशन लाइब्रेरी, ट्रांज़िशन की स्थिति को ठीक से मिटा नहीं पाती है. (b/414612221 देखें). (Ib5235)

वर्शन 1.8.6

12 फ़रवरी, 2025

androidx.fragment:fragment-*:1.8.6 रिलीज़ हो गया है. वर्शन 1.8.6 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • FragmentContainerView के setOnApplyWindowInsetsListener ओवरराइड में अब एक शून्य लिसनर होता है, जो फ़्रेमवर्क की अनुमति के मुताबिक होता है. (I575f0, b/282790626)

वर्शन 1.8.5

30 अक्टूबर, 2024

androidx.fragment:fragment-*:1.8.5 रिलीज़ हो गया है. वर्शन 1.8.5 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • हमने एक ऐसी समस्या को ठीक किया है जिसमें IllegalStateException, saveBackStack से तब ट्रिगर होता था, जब अनुमानित बैक जेस्चर को रद्द कर दिया जाता था या उसमें रुकावट आ जाती थी. (I3387d, b/342419080)

वर्शन 1.8.4

2 अक्टूबर, 2024

androidx.fragment:fragment-*:1.8.4 रिलीज़ हो गया है. वर्शन 1.8.4 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • हमने उस समस्या को ठीक कर दिया है जिसमें Androidx Transitions का इस्तेमाल करते समय, सिस्टम के 'वापस जाएं' बटन को तेज़ी से दबाने या हाथ के जेस्चर से तेज़ी से वापस जाने पर, फ़्रैगमेंट क्रैश हो जाते थे. (Ibc038, b/364804225)
  • फ़्रैगमेंट में एक समस्या ठीक की गई है. इसमें, अनुमानित बैक जेस्चर को रोकने पर, फ़्रैगमेंट मैनेजर को अनडिफ़ाइंड स्थिति में भेज दिया जाता था. साथ ही, गलत फ़्रैगमेंट भी दिखता था. (If82e2, b/338624457)
  • AndroidFragment के UninitializedPropertyAccessException में मौजूद समस्या को ठीक किया गया है. यह समस्या तब होती थी, जब आपके AndroidFragment इंस्टेंस के इस्तेमाल किए जा रहे क्लास को डाइनैमिक तरीके से स्वैप किया जाता था. (I12dea)

वर्शन 1.8.3

4 सितंबर, 2024

androidx.fragment:fragment-*:1.8.3 रिलीज़ हो गया है. वर्शन 1.8.3 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • FragmentManager अब पीछे जाने की झलक दिखाने वाले जेस्चर को हैंडल करते समय, लंबित कार्रवाइयों को ध्यान में रखता है. इससे यह पक्का हो जाएगा कि सिस्टम को पहले जैसा करने पर, अब IndexOutOfBoundsException नहीं होगा. (I9ba32, b/342316801)
  • AndroidFragment को कंपोज़िशन में जोड़ने पर, अब यह क्रैश नहीं होता. ऐसा तब होता है, जब कंटेनिंग ऐक्टिविटी/फ़्रैगमेंट की स्थिति पहले से ही सेव हो. (I985e9, b/356643968)

वर्शन 1.8.2

24 जुलाई, 2024

androidx.fragment:fragment-*:1.8.2 रिलीज़ हो गया है. वर्शन 1.8.2 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • AndroidFragment अब उन मामलों को ठीक से हैंडल करता है जहां पैरंट फ़्रैगमेंट को फ़्रैगमेंट बैक स्टैक पर रखा जाता है. इससे उस फ़्रैगमेंट पर वापस जाने पर, 'आईडी के लिए कोई व्यू नहीं मिला' समस्याएं नहीं होती हैं. (I94608)
  • FragmentTransaction.add तरीके से जोड़े गए फ़्रैगमेंट, अब ViewGroup लेते हैं. इसके बाद, onStart() पर जाने से पहले onContainerAvailable तक इंतज़ार करते हैं. इससे उस एपीआई का इस्तेमाल करने वाले लोगों पर असर पड़ता है. जैसे, AndroidFragment. अब AndroidFragment, onStart() के ज़रिए इसे आगे बढ़ाने से पहले, कंपोज़िशन में फिर से शामिल होने के लिए इंतज़ार करता है. (I94608)

वर्शन 1.8.1

26 जून, 2024

androidx.fragment:fragment-*:1.8.1 रिलीज़ हो गया है. वर्शन 1.8.1 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • उस समस्या को ठीक किया गया है जिसमें कंटेनर के बिना फ़्रैगमेंट, अनुमानित बैक जेस्चर शुरू करने पर तुरंत DESTROYED हो जाते थे. अब ये CREATED स्थिति में तब तक बने रहते हैं, जब तक कि जेस्चर पूरा नहीं हो जाता. (If6b83, b/345244539)

वर्शन 1.8.0

12 जून, 2024

androidx.fragment:fragment-*:1.8.0 रिलीज़ हो गया है. वर्शन 1.8.0 में ये बदलाव शामिल हैं.

1.7.0 के बाद हुए अहम बदलाव

  • fragment-compose आर्टफ़ैक्ट में अब AndroidFragment Composable शामिल है. इसकी मदद से, फ़्रैगमेंट क्लास के नाम का इस्तेमाल करके, Compose के हाइरार्की में फ़्रैगमेंट जोड़े जा सकते हैं. यह फ़्रैगमेंट की स्थिति को सेव करने और वापस लाने की प्रोसेस को अपने-आप मैनेज करता है. इसका इस्तेमाल, फ़्रैगमेंट को बड़ा करने के लिए पहले सुझाई गई AndroidViewBinding के इस्तेमाल के तरीके के विकल्प के तौर पर किया जाना चाहिए.
  • FragmentManager के OnBackStackChangedListener इंटरफ़ेस पर onBackStackChangeCancelled कॉलबैक अब FragmentManager में कार्रवाइयां करने के दौरान ट्रिगर होता है. इससे, onBackStackChangeCommitted कॉलबैक के ट्रिगर होने के समय के साथ इसकी टाइमिंग में समानता आ जाती है.

वर्शन 1.8.0-rc01

29 मई, 2024

androidx.fragment:fragment-*:1.8.0-rc01 रिलीज़ हो गया है. वर्शन 1.8.0-rc01 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • FragmentManagers OnBackStackChangedListener इंटरफ़ेस पर मौजूद onBackStackChangeCancelled कॉलबैक अब FragmentManager में कार्रवाइयां करने के दौरान ट्रिगर होता है. इससे यह onBackStackChangeCommitted कॉलबैक के ट्रिगर होने के समय के ज़्यादा करीब आ जाता है. (I5ebfb, b/332916112)

वर्शन 1.8.0-beta01

14 मई, 2024

androidx.fragment:fragment-*:1.8.0-beta01 रिलीज़ हो गया है. वर्शन 1.8.0-beta01 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • फ़्रैगमेंट 1.7.1 से: पीछे जाने पर झलक दिखाने वाला हाथ का जेस्चर की सुविधा अब सिर्फ़ उन लेन-देन के लिए काम करेगी जिनमें सभी फ़्रैगमेंट में ऐनिमेटर या AndroidX ट्रांज़िशन की सुविधा उपलब्ध है. इस अपडेट में, उस समस्या को ठीक किया गया है जिसमें कुछ हद तक आगे-पीछे किए जा सकने वाले लेन-देन को रद्द करने पर काली स्क्रीन दिखती थी. (I43037, b/339169168)

वर्शन 1.8.0-alpha02

17 अप्रैल, 2024

androidx.fragment:fragment-*:1.8.0-alpha02 रिलीज़ हो गया है. वर्शन 1.8.0-alpha02 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • फ़्रैगमेंट 1.7.0-rc02 से: ऐसे लॉग जोड़े गए हैं जिनसे यह पता चलेगा कि बिना किसी अन्य ट्रांज़िशन के sharedElement सेट करने पर, वह क्यों नहीं चलेगा. (Iec48e)
  • फ़्रैगमेंट 1.7.0-rc02: इस गड़बड़ी को ठीक किया गया है. इसमें, अगर किसी ऐसे लेन-देन में शेयर किया गया कोई ऐसा एलिमेंट जोड़ा जाता था जिसे ढूंढा नहीं जा सकता था, तो क्रैश हो जाता था. हालांकि, लेन-देन में शामिल अन्य सभी ट्रांज़िशन को ढूंढा जा सकता था. अब लेन-देन को सही तरीके से, खोजे नहीं जा सकने वाले लेन-देन के तौर पर माना जाएगा. (I18ccd)

वर्शन 1.8.0-alpha01

3 अप्रैल, 2024

androidx.fragment:fragment-*:1.8.0-alpha01 रिलीज़ हो गया है. वर्शन 1.8.0-alpha01 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • नए AndroidFragment Composable की मदद से, फ़्रैगमेंट क्लास के नाम का इस्तेमाल करके, कंपोज़ हेरारकी में फ़्रैगमेंट जोड़े जा सकते हैं. यह फ़्रैगमेंट की स्थिति को सेव करने और वापस लाने की प्रोसेस को अपने-आप मैनेज करता है. इसका इस्तेमाल, AndroidViewBinding Composable के सीधे तौर पर बदले जाने वाले विकल्प के तौर पर किया जा सकता है.(b/312895363, Icf841)

दस्तावेज़ में बदलाव

  • OnBackStackChangedListener एपीआई के लिए दस्तावेज़ अपडेट किया गया है. इसमें बताया गया है कि इन्हें कब कॉल किया जाता है और इनका इस्तेमाल कैसे किया जाना चाहिए. (I0bfd9)

डिपेंडेंसी अपडेट करना

वर्शन 1.7

वर्शन 1.7.1

14 मई, 2024

androidx.fragment:fragment-*:1.7.1 रिलीज़ हो गया है. वर्शन 1.7.1 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • पीछे जाने पर झलक दिखाने वाला हाथ का जेस्चर अब सिर्फ़ उन लेन-देन के लिए काम करेगा जिनमें सभी फ़्रैगमेंट में, Animator या Seekable Androidx ट्रांज़िशन मौजूद है. इस अपडेट में, आंशिक रूप से सीक किए जा सकने वाले लेन-देन को रद्द करने पर खाली स्क्रीन दिखने की समस्या को ठीक किया गया है. (I43037, b/339169168)

वर्शन 1.7.0

1 मई, 2024

androidx.fragment:fragment-*:1.7.0 रिलीज़ हो गया है. वर्शन 1.7.0 में ये बदलाव शामिल हैं.

पीछे जाने के लिए किए जाने वाले जेस्चर की झलक दिखाने की सुविधा

  • Animator या AndroidX Transition 1.5.0 का इस्तेमाल करने पर, फ़्रैगमेंट अब ऐप्लिकेशन में पीछे जाने पर झलक दिखाने वाली सुविधा के साथ काम करते हैं. इससे उपयोगकर्ता, वापस जाने के लिए किए जाने वाले जेस्चर का इस्तेमाल करके, पिछले फ़्रैगमेंट को देख सकते हैं. इसके लिए, उन्हें ऐनिमेशन बनाने वाले व्यक्ति या ट्रांज़िशन का इस्तेमाल करना होगा. इसके बाद, वे जेस्चर पूरा करके लेन-देन को पूरा कर सकते हैं या उसे रद्द कर सकते हैं.
ट्रांज़िशन सिस्टम एक्सएमएल संसाधन पीछे जाने पर झलक दिखाने वाले हाथ के जेस्चर की सुविधा काम करती है
Animation R.anim नहीं
Animator R.animator हां
फ़्रेमवर्क Transition R.transition नहीं
AndroidX Transition के साथ Transition 1.4.1 या इससे पहले का वर्शन R.transition नहीं
AndroidX Transition के साथ Transition 1.5.0 R.transition हां

अगर आपने पीछे जाने पर झलक दिखाने वाले हाथ के जेस्चर की सुविधा के लिए ऑप्ट-इन किया है और इसके बाद आपको फ़्रैगमेंट में, पीछे जाने पर झलक दिखाने वाले हाथ के जेस्चर की सुविधा से जुड़ी कोई समस्या दिखती है, तो कृपया फ़्रैगमेंट के ख़िलाफ़ समस्या की शिकायत करें. साथ ही, एक ऐसा सैंपल प्रोजेक्ट शामिल करें जिसमें आपकी समस्या दिखती हो. गतिविधि के onCreate() में मौजूद FragmentManager.enabledPredictiveBack(false) का इस्तेमाल करके, अनुमानित बैक सुविधा को बंद किया जा सकता है.

FragmentManager.OnBackStackChangedListener() अब onBackStackChangeProgressed() और onBackStackChangeCancelled() उपलब्ध कराता है. इनकी मदद से, पीछे जाने पर झलक दिखाने वाले हाथ के जेस्चर की प्रोग्रेस और रद्द किए गए इवेंट के बारे में जानकारी मिलती है.

फ़्रैगमेंट कंपोज़ आर्टफ़ैक्ट

एक नया fragment-compose आर्टफ़ैक्ट बनाया गया है. इसका मकसद, उन ऐप्लिकेशन को सपोर्ट करना है जो फ़्रैगमेंट आधारित आर्किटेक्चर से पूरी तरह से कंपोज़ आधारित आर्किटेक्चर पर माइग्रेट कर रहे हैं.

इस नए आर्टफ़ैक्ट में उपलब्ध पहली सुविधा, Fragment पर content एक्सटेंशन मेथड है. इसका मकसद, किसी फ़्रैगमेंट के यूज़र इंटरफ़ेस (यूआई) के लिए Compose का इस्तेमाल करना आसान बनाना है. इसके लिए, यह आपके लिए एक ComposeView बनाता है और सही ViewCompositionStrategy सेट करता है.

  class ExampleFragment : Fragment() {

      override fun onCreateView(
          inflater: LayoutInflater,
          container: ViewGroup?,
          savedInstanceState: Bundle?
      ) = content {
          // Write your @Composable content here
          val viewModel: ExampleViewModel = viewModel()

          // or extract it into a separate, testable method
          ExampleComposable(viewModel)
      }
  }

वर्शन 1.7.0-rc02

17 अप्रैल, 2024

androidx.fragment:fragment-*:1.7.0-rc02 रिलीज़ हो गया है. वर्शन 1.7.0-rc02 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • ऐसे लॉग जोड़े गए हैं जिनसे यह पता चलता है कि बिना किसी अन्य ट्रांज़िशन के sharedElement सेट करने पर, वह क्यों नहीं चलेगा. (Iec48e)
  • एक गड़बड़ी को ठीक किया गया है. इसमें अगर किसी ऐसे ट्रांज़िशन में कोई ऐसा शेयर किया गया एलिमेंट जोड़ा जाता था जिसे ढूंढा नहीं जा सकता था, तो क्रैश हो जाता था. हालांकि, उस ट्रांज़िशन में मौजूद अन्य सभी ट्रांज़िशन को ढूंढा जा सकता था. अब लेन-देन को सही तरीके से, खोजे नहीं जा सकने वाले लेन-देन के तौर पर माना जाएगा. (I18ccd)

वर्शन 1.7.0-rc01

3 अप्रैल, 2024

androidx.fragment:fragment-*:1.7.0-rc01 रिलीज़ हो गया है. वर्शन 1.7.0-rc01 में ये बदलाव शामिल हैं.

डिपेंडेंसी अपडेट करना

  • यह फ़्रैगमेंट अब Profile Installer 1.3.1 पर निर्भर करता है.

वर्शन 1.7.0-beta01

20 मार्च, 2024

androidx.fragment:fragment-*:1.7.0-beta01 रिलीज़ हो गया है. वर्शन 1.7.0-beta01 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • FragmentHostCallback को अब Kotlin में लिखा गया है, ताकि होस्ट के जेनरिक टाइप की शून्यता, onGetHost() के रिटर्न टाइप की शून्यता से मेल खाए. (I40af5)

गड़बड़ियां ठीक की गईं

  • उस समस्या को ठीक किया गया है जिसमें कंटेनर में मौजूद नहीं होने वाले फ़्रैगमेंट पर, अनुमानित बैक जेस्चर का इस्तेमाल करने पर वह फ़्रैगमेंट कभी भी डिस्ट्रॉय नहीं होता था. अब फ़्रैगमेंट को तुरंत आखिरी स्थिति में ले जाया जाएगा. (Ida0d9)
  • Fragments में, अनुमानित बैक जेस्चर की मदद से आने वाले ट्रांज़िशन को रोकने पर, व्यू के बंद होने और स्क्रीन के खाली रहने की समस्या को ठीक किया गया है. (Id3f22, b/319531491)

वर्शन 1.7.0-alpha10

7 फ़रवरी, 2024

androidx.fragment:fragment-*:1.7.0-alpha10 रिलीज़ हो गया है. वर्शन 1.7.0-alpha10 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • फ़्रैगमेंट की पिछली रिलीज़ में मौजूद उस समस्या को ठीक किया गया है जिसमें Animator या AndroidX ट्रांज़िशन के लिए, फ़्रैगमेंट की पीछे जाने पर झलक दिखाने वाले हाथ के जेस्चर की सुविधा का इस्तेमाल करने पर, फ़्रैगमेंट handleOnBackProgressed से NullPointerException दिखाएंगे. ऐसा तब होगा, जब addOnBackStackChangedListener के ज़रिए कोई FragmentManager.OnBackStackChangedListener कभी नहीं जोड़ा गया हो. (I7c835)

वर्शन 1.7.0-alpha09

24 जनवरी, 2024

androidx.fragment:fragment-*:1.7.0-alpha09 रिलीज़ हो गया है. वर्शन 1.7.0-alpha09 में ये बदलाव शामिल हैं.

फ़्रैगमेंट कंपोज़ आर्टफ़ैक्ट

एक नया fragment-compose आर्टफ़ैक्ट बनाया गया है. इसका मकसद, उन ऐप्लिकेशन को सपोर्ट करना है जो फ़्रैगमेंट आधारित आर्किटेक्चर से पूरी तरह से कंपोज़ आधारित आर्किटेक्चर पर माइग्रेट कर रहे हैं.

इस नए आर्टफ़ैक्ट में उपलब्ध पहली सुविधा, Fragment पर content एक्सटेंशन मेथड है. इसका मकसद, किसी फ़्रैगमेंट के यूज़र इंटरफ़ेस (यूआई) के लिए Compose का इस्तेमाल करना आसान बनाना है. इसके लिए, यह आपके लिए ComposeView बनाता है और सही ViewCompositionStrategy सेट करता है. (561cb7, b/258046948)

class ExampleFragment : Fragment() {

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ) = content {
        // Write your @Composable content here
        val viewModel: ExampleViewModel = viewModel()

        // or extract it into a separate, testable method
        ExampleComposable(viewModel)
    }
}

नई सुविधाएं

  • FragmentManager.OnBackStackChangedListener() अब onBackStackChangeProgressed() और onBackStackChangeCancelled() उपलब्ध कराता है. इनकी मदद से, पीछे जाने पर झलक दिखाने वाले हाथ के जेस्चर के प्रोग्रेस और रद्द किए गए इवेंट की जानकारी मिलती है. (214b87)

आम समस्या

  • Animator या AndroidX ट्रांज़िशन के लिए, Fragment में पीछे जाने पर झलक दिखाने की सुविधा का इस्तेमाल करते समय, अगर addOnBackStackChangedListener के ज़रिए कोई FragmentManager.OnBackStackChangedListener नहीं जोड़ा गया है, तो Fragment, handleOnBackProgressed से NullPointerException थ्रो करेगा. मैन्युअल तरीके से लिसनर जोड़ने पर, क्रैश की समस्या ठीक हो जाएगी. इस समस्या को ठीक करने के लिए, Fragments का अगला वर्शन उपलब्ध होगा.

वर्शन 1.7.0-alpha08

10 जनवरी, 2024

androidx.fragment:fragment-*:1.7.0-alpha08 रिलीज़ हो गया है. वर्शन 1.7.0-alpha08 में ये बदलाव शामिल हैं.

खाली करने के लिए जगह

  • ट्रांज़िशन लाइब्रेरी के लिए, कामचलाऊ समाधान को हटा दिया गया है. इस समस्या को Transition 1.5.0-alpha06 में ठीक कर दिया गया है. (I04356)

वर्शन 1.7.0-alpha07

29 नवंबर, 2023

androidx.fragment:fragment-*:1.7.0-alpha07 रिलीज़ हो गया है. वर्शन 1.7.0-alpha07 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • शेयर किए गए एलिमेंट का ट्रांज़िशन सेट करने और enter/exitTransition सेट न करने की वजह से हुई NullPointerException को ठीक किया गया है. (I8472b)
  • फ़्रैगमेंट 1.6.2 से: जब FragmentContainerView का फ़्रैगमेंट बड़ा किया जाता है, तो उसकी स्थितियां जैसे कि FragmentManager, होस्ट, और आईडी अब onInflate कॉलबैक में ऐक्सेस की जा सकती हैं. (I1e44c, b/307427423)
  • फ़्रैगमेंट 1.6.2 से: फ़्रैगमेंट के सेट को हटाने के लिए clearBackStack का इस्तेमाल करने पर, पैरंट फ़्रैगमेंट के ViewModels मिटाए जाने पर, नेस्ट किए गए किसी भी फ़्रैगमेंट के ViewModel मिट जाएंगे. (I6d83c, b/296173018)

वर्शन 1.7.0-alpha06

4 अक्टूबर, 2023

androidx.fragment:fragment-*:1.7.0-alpha06 रिलीज़ हो गया है. वर्शन 1.7.0-alpha06 में ये बदलाव शामिल हैं.

डिपेंडेंसी अपडेट

  • Fragments को अपडेट कर दिया गया है. अब यह Transition 1.5.0-alpha04 में जोड़े गए नए animateToStart API पर निर्भर करता है.

वर्शन 1.7.0-alpha05

20 सितंबर, 2023

androidx.fragment:fragment-*:1.7.0-alpha05 रिलीज़ हो गया है. वर्शन 1.7.0-alpha05 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • AndroidX ट्रांज़िशन का इस्तेमाल करते समय, फ़्रैगमेंट अब पीछे जाने पर झलक दिखाने वाले हाथ के जेस्चर की सुविधा के साथ काम करते हैं. इससे, पीछे जाने के लिए हाथ के जेस्चर का इस्तेमाल करके, पिछले फ़्रैगमेंट पर जाया जा सकता है. इसके लिए, आपको अपने कस्टम Androidx ट्रांज़िशन का इस्तेमाल करना होगा. इसके बाद, आपको यह तय करना होगा कि जेस्चर पूरा होने पर लेन-देन को पूरा करना है या रद्द करना है. इस सुविधा को चालू करने के लिए, आपको Transition 1.5.0-alpha03 रिलीज़ पर निर्भर रहना होगा. (Ib49b4, b/285175724)

मौजूदा समस्याएं

  • फ़िलहाल, एक समस्या आ रही है. इसमें, ट्रांज़िशन के साथ बैक जेस्चर को एक बार रद्द करने के बाद, अगली बार बैक जेस्चर शुरू करने पर ट्रांज़िशन नहीं चलेगा. इससे स्क्रीन खाली हो जाएगी. ऐसा ट्रांज़िशन लाइब्रेरी में किसी समस्या की वजह से हो सकता है. (b/300157785). अगर आपको यह समस्या दिखती है, तो कृपया Fragment के ख़िलाफ़ समस्या दर्ज करें. साथ ही, एक ऐसा सैंपल प्रोजेक्ट भी शामिल करें जिससे आपकी समस्या को दोहराया जा सके. गतिविधि के onCreate() में मौजूद FragmentManager.enabledPredictiveBack(false) का इस्तेमाल करके, अनुमानित बैक सुविधा को बंद किया जा सकता है.

वर्शन 1.7.0-alpha04

6 सितंबर, 2023

androidx.fragment:fragment-*:1.7.0-alpha04 रिलीज़ हो गया है. वर्शन 1.7.0-alpha04 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • अनुमानित बैक जेस्चर को रद्द करने पर, फ़्रैगमेंट के लाइफ़साइकल की सही स्थिति में न पहुंचने की समस्या को ठीक किया गया है. (I7cffe, b/297379023)
  • ऐसी रिग्रेशन गड़बड़ी को ठीक किया गया है जिसमें ट्रांज़िशन के साथ ऐनिमेशन चलाने की अनुमति दी गई थी. (I59f36)
  • फ़्रैगमेंट के साथ पीछे जाने पर झलक दिखाने वाले हाथ के जेस्चर की सुविधा का इस्तेमाल करते समय होने वाली समस्या को ठीक किया गया है. इस समस्या में, बैक स्टैक पर मौजूद दूसरे से आखिरी फ़्रैगमेंट पर तेज़ी से दो बार पीछे जाने की कोशिश करने पर ऐप्लिकेशन क्रैश हो जाता था. (Ifa1a4)

वर्शन 1.7.0-alpha03

23 अगस्त, 2023

androidx.fragment:fragment-*:1.7.0-alpha03 रिलीज़ हो गया है. वर्शन 1.7.0-alpha03 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • अनुमानित तौर पर वापस जाने की सुविधा का इस्तेमाल करते समय, फ़्रैगमेंट से जुड़ी समस्या को ठीक किया गया है. इस समस्या की वजह से, फ़्रैगमेंट मैनेजर के बैक स्टैक में मौजूद पहले फ़्रैगमेंट को स्किप कर दिया जाता था. साथ ही, तीन बटन वाले नेविगेशन या अनुमानित तौर पर वापस जाने के जेस्चर के ज़रिए सिस्टम बैक का इस्तेमाल करने पर, गतिविधि बंद हो जाती थी. (I0664b, b/295231788)

वर्शन 1.7.0-alpha02

9 अगस्त, 2023

androidx.fragment:fragment-*:1.7.0-alpha02 रिलीज़ हो गया है. वर्शन 1.7.0-alpha02 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • API 34 से, पीछे जाने पर झलक दिखाने वाले हाथ के जेस्चर के साथ फ़्रैगमेंट का इस्तेमाल करते समय, अगर ट्रांज़िशन सिस्टम का इस्तेमाल किया जा रहा है, तो फ़्रैगमेंट अब तब तक इंतज़ार करेंगे, जब तक जेस्चर पूरा नहीं हो जाता. इसके बाद, वे बैक ऐक्शन को पूरा करेंगे. ऐसा तब होगा, जब ट्रांज़िशन सिस्टम में सीकिंग (Animations, Transitions) की सुविधा काम नहीं करती या ट्रांज़िशन की सुविधा काम नहीं करती. (I8100c)

वर्शन 1.7.0-alpha01

7 जून, 2023

androidx.fragment:fragment-*:1.7.0-alpha01 रिलीज़ हो गया है. इस वर्शन को इंटरनल ब्रांच में डेवलप किया गया है.

नई सुविधाएं

  • Animator का इस्तेमाल करते समय, फ़्रैगमेंट अब ऐप्लिकेशन में पीछे जाने पर झलक दिखाने की सुविधा के साथ काम करते हैं. इससे, वापस जाने के जेस्चर का इस्तेमाल करके, पिछले फ़्रैगमेंट को अपने कस्टम ऐनिमेटर के साथ देखा जा सकता है. इसके बाद, यह तय किया जा सकता है कि जेस्चर पूरा करके ट्रांज़ैक्शन को पूरा करना है या रद्द करना है. एक्सपेरिमेंट के तौर पर उपलब्ध enablePredictiveBack() का इस्तेमाल करके और false पास करके, इस नई सुविधा को बंद किया जा सकता है.

वर्शन 1.6

वर्शन 1.6.2

1 नवंबर, 2023

androidx.fragment:fragment-*:1.6.2 रिलीज़ हो गया है. वर्शन 1.6.2 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • FragmentContainerView के फ़्रैगमेंट के इन्फ़्लेट होने पर, अब इसकी स्थितियां onInflate कॉलबैक में ऐक्सेस की जा सकती हैं. जैसे, FragmentManager, होस्ट, और आईडी. (I1e44c, b/307427423)
  • फ़्रैगमेंट के किसी सेट को हटाने के लिए clearBackStack का इस्तेमाल करने पर, अब पैरंट फ़्रैगमेंट के ViewModels मिटाए जाने पर, नेस्ट किए गए किसी भी फ़्रैगमेंट के ViewModel मिट जाएंगे. (I6d83c, b/296173018)

वर्शन 1.6.1

26 जुलाई, 2023

androidx.fragment:fragment-*:1.6.1 रिलीज़ हो गया है. वर्शन 1.6.1 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • गतिविधि के रुकने पर सेव की गई स्थिति को तब सेव किया जाता है, जब गतिविधि पूरी तरह से बंद नहीं होती है. इस समस्या को ठीक किया गया है. इसमें, फ़्रैगमेंट इंस्टेंस को वापस RESUMED स्थिति में ले जाने के बाद भी, सेव की गई स्थिति को गलत तरीके से कैश मेमोरी में सेव किया जाता था. ऐसा करने पर, कैश मेमोरी में सेव की गई स्थिति का फिर से इस्तेमाल किया जाएगा. ऐसा तब होगा, जब उस फ़्रैगमेंट इंस्टेंस को सेव और वापस लाने के लिए, एक से ज़्यादा पिछली गतिविधियां वाले एपीआई का इस्तेमाल किया जा रहा हो और वह पिछली गतिविधियां में मौजूद हो. (I71288, b/246289075)

डिपेंडेंसी अपडेट

  • अब फ़्रैगमेंट, Activity 1.7.2 पर निर्भर करता है. इससे उस समस्या को ठीक किया गया है जिसमें Kotlin का इस्तेमाल करने वाले लोग, Activity पर साफ़ तौर पर निर्भर हुए बिना ComponentDialog को नहीं बढ़ा सकते थे. (b/287509323)

वर्शन 1.6.0

7 जून, 2023

androidx.fragment:fragment-*:1.6.0 रिलीज़ हो गया है. वर्शन 1.6.0 में ये बदलाव शामिल हैं.

1.5.0 के बाद हुए अहम बदलाव

  • Fragments की सेव की गई स्थिति को पूरी तरह से निजी लाइब्रेरी की स्थिति (कस्टम Parcelable क्लास) और डेवलपर की ओर से दी गई स्थिति के बीच बांट दिया गया है. अब इसे हमेशा ऐसे Bundle में सेव किया जाता है जिससे यह पता लगाया जा सकता है कि फ़्रैगमेंट की स्थिति कहां से शुरू हो रही है.
  • FragmentManager.OnBackStackChangedListener इंटरफ़ेस को बड़ा कर दिया गया है. इसमें onBackStackChangeStarted और onBackStackChangeCommitted के दो और कॉलबैक जोड़े गए हैं. इन्हें हर Fragment के साथ कॉल किया जाता है. onBackStackChangeStarted को फ़्रैगमेंट बैक स्टैक में जोड़ने/हटाने से ठीक पहले और onBackStackChangeCommitted को लेन-देन पूरा होने के ठीक बाद कॉल किया जाता है.
  • FragmentStrictMode ने एक नया WrongNestedHierarchyViolation जोड़ा है. यह तब पता लगाता है, जब कोई चाइल्ड फ़्रैगमेंट अपने पैरंट की व्यू हैरारकी में नेस्ट किया गया हो, लेकिन पैरंट के childFragmentManager में न जोड़ा गया हो.
  • Fragment और FragmentManager एपीआई, Intent या IntentSender लेते हैं. अब इन्हें @NonNull के साथ सही तरीके से एनोटेट किया गया है, ताकि इनमें शून्य वैल्यू न डाली जा सके. ऐसा इसलिए, क्योंकि शून्य वैल्यू डालने पर, ये तरीके जिस Android फ़्रेमवर्क एपीआई को कॉल करते हैं वह तुरंत क्रैश हो जाता है.
  • DialogFragment अब requireComponentDialog() API के ज़रिए, ComponentDialog के डेटा का ऐक्सेस देता है.
  • फ़्रैगमेंट अब लाइफ़साइकल 2.6.1 पर निर्भर करता है.
  • अब फ़्रैगमेंट, SavedState 1.2.1 पर निर्भर करता है.
  • अब फ़्रैगमेंट, ProfileInstaller 1.3.0 पर निर्भर करता है.
  • fragment-testing-manifest आर्टफ़ैक्ट, मेनिफ़ेस्ट एंट्री को फ़्रैगमेंट-टेस्टिंग कॉम्पोनेंट के बाकी हिस्सों से अलग करता है. इसका मतलब है कि ये काम किए जा सकते हैं:

    debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z")
    androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")
    

    इससे fragment-testing और androidx.test के बीच वर्शन के अंतर की वजह से होने वाले टकराव से बचा जा सकता है

वर्शन 1.6.0-rc01

10 मई, 2023

androidx.fragment:fragment-*:1.6.0-rc01 रिलीज़ हो गया है. वर्शन 1.6.0-rc01 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • इस समस्या को ठीक कर दिया गया है. इसकी वजह से, जब एक के बाद एक कई startActivityForResult अनुरोध किए जाते हैं, तो ActivityResult को गलत अनुरोध कोड के साथ भेजा जाता है. (If0b9d, b/249519359)
  • उस समस्या को ठीक किया गया है जिसमें onBackStackChangeListener कॉलबैक, उन लेन-देन के लिए भेजे जा रहे थे जिनसे बैक स्टैक में कोई बदलाव नहीं हुआ था. ऐसा तब हो रहा था, जब इन लेन-देन को उन लेन-देन के साथ मिला दिया गया था जिनसे बैक स्टैक में बदलाव होता है. (I0eb5c, b/279306628)

वर्शन 1.6.0-beta01

19 अप्रैल, 2023

androidx.fragment:fragment-*:1.6.0-beta01 रिलीज़ हो गया है. वर्शन 1.6.0-beta01 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • टाइम आउट के साथ postponeEnterTransition का इस्तेमाल करने और फिर स्थगित किए गए फ़्रैगमेंट को बदलने से, अब स्थगित किए गए फ़्रैगमेंट का डेटा लीक नहीं होता. (I2ec7d, b/276375110)
  • अब नए onBackStackChangeStarted और onBackStackChangeCommitted कॉलबैक, फ़्रैगमेंट को सिर्फ़ एक बार भेजेंगे. भले ही, कई लेन-देन में एक ही फ़्रैगमेंट शामिल हो. (Ic6b69)

वर्शन 1.6.0-alpha09

5 अप्रैल, 2023

androidx.fragment:fragment-*:1.6.0-alpha09 रिलीज़ हो गया है. वर्शन 1.6.0-alpha09 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • DialogFragment अब requireComponentDialog() API के ज़रिए, ComponentDialog को ऐक्सेस करने की सुविधा देता है. (I022e3, b/234274777)
  • फ़्रैगमेंट commitNow(), executePendingTransactions(), और popBackStackImmediate() एपीआई को @MainThread के साथ एनोटेट किया गया है. इसका मतलब है कि अब ये सभी एपीआई, रनटाइम पर फ़ेल होने के बजाय, मुख्य थ्रेड से कॉल न किए जाने पर बिल्ड की गड़बड़ियां दिखाएंगे. (Ic9665, b/236538905)

गड़बड़ियां ठीक की गईं

  • FragmentManager में मौजूद एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, एक ही फ़्रेम में सेव और वापस लाने की कार्रवाई करने पर, ऐप्लिकेशन क्रैश हो सकता था. (Ib36af, b/246519668)
  • OnBackStackChangedListener onBackStackChangeStarted और onBackStackChangeCommitted कॉलबैक अब सिर्फ़ तब लागू होते हैं, जब FragmentManager पिछली गतिविधियों में बदलाव किया जाता है. (I66055, b/274788957)

वर्शन 1.6.0-alpha08

22 मार्च, 2023

androidx.fragment:fragment-*:1.6.0-alpha08 रिलीज़ हो गया है. वर्शन 1.6.0-alpha08 में ये बदलाव शामिल हैं.

व्यवहार में बदलाव

  • फ़्रैगमेंट ऑपरेशन के लागू होने से पहले, OnBackStackChangedListener.onBackStackChangeCommited कॉलबैक को लागू करने के लिए, उसके समय में बदलाव किया गया है. इससे यह पक्का होता है कि कॉल बैक को कभी भी ऐसा फ़्रैगमेंट नहीं भेजा जाएगा जो अलग हो गया हो. (I66a76, b/273568280)

गड़बड़ियां ठीक की गईं

  • Fragment 1.5.6: एक समस्या को ठीक किया गया है. इस समस्या में, अगर Lifecycle पहले से ही STARTED था और कोई नतीजा पहले से ही उपलब्ध था, तो setFragmentResultListener के अंदर clearFragmentResultListener को कॉल करने पर काम नहीं करता था. (If7458)

डिपेंडेंसी से जुड़े अपडेट

वर्शन 1.6.0-alpha07

8 मार्च, 2023

androidx.fragment:fragment-*:1.6.0-alpha07 रिलीज़ हो गया है. वर्शन 1.6.0-alpha07 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • फ़्रैगमेंट 1.5.6: इस अपडेट में, उस समस्या को ठीक किया गया है जिसमें किसी फ़्रैगमेंट को हटाने पर, गतिविधि का मेन्यू अमान्य हो जाता था. इससे कोई फ़र्क़ नहीं पड़ता था कि फ़्रैगमेंट में मेन्यू आइटम जोड़े गए हैं या नहीं. (50f098, b/244336571)

वर्शन 1.6.0-alpha06

22 फ़रवरी, 2023

androidx.fragment:fragment-*:1.6.0-alpha06 रिलीज़ हो गया है. वर्शन 1.6.0-alpha06 में ये बदलाव शामिल हैं.

व्यवहार में बदलाव

  • अब FragmentManager के onBackStackChangedListener पर मौजूद नया onBackStackChangedStarted कॉलबैक, फ़्रैगमेंट के टारगेट स्टेट में जाने से पहले लागू होगा. (I34726)

वर्शन 1.6.0-alpha05

8 फ़रवरी, 2023

androidx.fragment:fragment-*:1.6.0-alpha05 रिलीज़ हो गया है. वर्शन 1.6.0-alpha05 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • FragmentManager.OnBackStackChagnedListener इंटरफ़ेस में अब दो और कॉलबैक, onBackStackChangeStarted और onBackStackChangeCommitted उपलब्ध हैं. इनकी मदद से, FragmentManager में पिछली गतिविधियों में बदलाव होने पर ज़्यादा जानकारी मिलती है और कंट्रोल किया जा सकता है. (Ib7ce5, b/238686802)

एपीआई में हुए बदलाव

  • Fragment और FragmentManager एपीआई, Intent या IntentSender लेते हैं. अब इन्हें @NonNull के साथ सही तरीके से एनोटेट किया गया है, ताकि इनमें शून्य वैल्यू न डाली जा सके. ऐसा इसलिए, क्योंकि शून्य वैल्यू डालने पर, ये तरीके जिन Android फ़्रेमवर्क एपीआई को कॉल करते हैं वे तुरंत क्रैश हो जाते हैं. (I06fd4)

वर्शन 1.6.0-alpha04

7 दिसंबर, 2022

androidx.fragment:fragment-*:1.6.0-alpha04 रिलीज़ हो गया है. वर्शन 1.6.0-alpha04 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • FragmentStrictMode ने एक नया WrongNestedHierarchyViolation जोड़ा है. यह तब पता लगाता है, जब कोई चाइल्ड फ़्रैगमेंट, पैरंट की व्यू हैरारकी में नेस्ट किया गया हो, लेकिन पैरंट के childFragmentManager में न जोड़ा गया हो. (I72521, b/249299268)

व्यवहार में बदलाव

  • फ़्रैगमेंट अब onAttach() से पहले अपनी SavedStateRegistry स्थिति को वापस लाते हैं. इससे यह पक्का होता है कि यह सभी अपवर्ड लाइफ़साइकल के तरीकों से उपलब्ध है. (I1e2b1)

एपीआई में हुए बदलाव

  • fragment-testing-manifest आर्टफ़ैक्ट, मेनिफ़ेस्ट एंट्री को फ़्रैगमेंट-टेस्टिंग कॉम्पोनेंट के बाकी हिस्सों से अलग करता है. इसका मतलब है कि ये काम किए जा सकते हैं:
debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z")
androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")

इससे fragment-testing और androidx.test के बीच वर्शन के अंतर की वजह से होने वाले टकराव से बचा जा सकता है.(I8e534, b/128612536)

गड़बड़ियां ठीक की गईं

  • Fragment 1.5.5: अब फ़्रैगमेंट, ViewModel की स्थिति को व्यू रजिस्ट्री की सेव की गई स्थिति के हिस्से के तौर पर गलत तरीके से सेव नहीं करेंगे. (I10d2b, b/253546214)

वर्शन 1.6.0-alpha03

5 अक्टूबर, 2022

androidx.fragment:fragment:1.6.0-alpha03, androidx.fragment:fragment-ktx:1.6.0-alpha03, और androidx.fragment:fragment-testing:1.6.0-alpha03 रिलीज़ किए गए हैं. वर्शन 1.6.0-alpha03 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • DialogFragment को बढ़ाने वाली क्लास को अब onDismiss() ओवरराइड में सुपर को कॉल करना होगा. (I14798, b/238928865)

गड़बड़ियां ठीक की गईं

  • नए प्रोवाइडर कॉलबैक इंटरफ़ेस (OnConfigurationChangedProvider, OnMultiWindowModeChangedProvider, OnTrimMemoryProvider, OnPictureInPictureModeChangedProvider) को इंटिग्रेट करने की वजह से हुई रिग्रेशन की समस्याओं को ठीक किया गया है. इससे यह पक्का किया जा सकेगा कि फ़्रैगमेंट को हमेशा सही कॉलबैक मिलें. (I9b380,I34581, (I8dfe6, b/242570955),If9d6b,Id0096,I690b3,I2cba2)

वर्शन 1.6.0-alpha02

24 अगस्त, 2022

androidx.fragment:fragment:1.6.0-alpha02, androidx.fragment:fragment-ktx:1.6.0-alpha02, और androidx.fragment:fragment-testing:1.6.0-alpha02 रिलीज़ किए गए हैं. वर्शन 1.6.0-alpha02 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • Fragment 1.5.2 से: इस समस्या को ठीक किया गया है. इसमें एक ही समय पर popBackStack() और replace() लेन-देन को लागू करने पर, बाहर निकलने वाले फ़्रैगमेंट गलत Animation/Animator को लागू कर सकते थे. (Ib1c07, b/214835303)

वर्शन 1.6.0-alpha01

27 जुलाई, 2022

androidx.fragment:fragment:1.6.0-alpha01, androidx.fragment:fragment-ktx:1.6.0-alpha01, और androidx.fragment:fragment-testing:1.6.0-alpha01 रिलीज़ किए गए हैं. वर्शन 1.6.0-alpha01 में ये बदलाव शामिल हैं.

व्यवहार में बदलाव

  • Fragment के सेव किए गए स्टेट को पूरी तरह से, निजी लाइब्रेरी स्टेट (कस्टम Parcelable क्लास) और डेवलपर की ओर से उपलब्ध कराई गई स्टेट के बीच बांट दिया गया है. अब इसे हमेशा Bundle में सेव किया जाता है. इससे यह पता लगाया जा सकता है कि फ़्रैगमेंट की स्टेट कहां से आ रही है. (b/207158202)

गड़बड़ियां ठीक की गईं

  • Fragment 1.5.1: DialogFragmentCallbacksDetector में रिग्रेशन की समस्या को ठीक किया गया है. इस समस्या की वजह से, AGP 7.4 के साथ बंडल किए गए लिंट वर्शन का इस्तेमाल करने पर, लिंट क्रैश हो जाता था. (b/237567009)

डिपेंडेंसी अपडेट करना

संस्‍करण 1.5

वर्शन 1.5.7

19 अप्रैल, 2023

androidx.fragment:fragment:1.5.7, androidx.fragment:fragment-ktx:1.5.7, और androidx.fragment:fragment-testing:1.5.7 रिलीज़ किए गए हैं. वर्शन 1.5.7 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • टाइम आउट के साथ postponeEnterTransition का इस्तेमाल करने और फिर स्थगित किए गए फ़्रैगमेंट को बदलने से, अब स्थगित किए गए फ़्रैगमेंट का डेटा लीक नहीं होता. (I2ec7d, b/276375110)

वर्शन 1.5.6

22 मार्च, 2023

androidx.fragment:fragment:1.5.6, androidx.fragment:fragment-ktx:1.5.6, और androidx.fragment:fragment-testing:1.5.6 रिलीज़ किए गए हैं. वर्शन 1.5.6 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • हमने उस समस्या को ठीक कर दिया है जिसमें किसी भी फ़्रैगमेंट को हटाने पर, गतिविधि का मेन्यू अमान्य हो जाता था. इससे कोई फ़र्क़ नहीं पड़ता था कि फ़्रैगमेंट में मेन्यू आइटम जोड़े गए हैं या नहीं. (50f098, b/244336571)
  • उस समस्या को ठीक किया गया है जिसमें Lifecycle के पहले से STARTED होने और नतीजे के पहले से उपलब्ध होने पर, setFragmentResultListener के अंदर clearFragmentResultListener को कॉल करने पर काम नहीं करता था. (If7458)

वर्शन 1.5.5

7 दिसंबर, 2022

androidx.fragment:fragment:1.5.5, androidx.fragment:fragment-ktx:1.5.5, और androidx.fragment:fragment-testing:1.5.5 रिलीज़ किए गए हैं. वर्शन 1.5.5 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • फ़्रैगमेंट अब ViewModel स्थिति को व्यू रजिस्ट्री में सेव की गई स्थिति के हिस्से के तौर पर गलत तरीके से सेव नहीं करेंगे. (I10d2b, b/253546214)

वर्शन 1.5.4

24 अक्टूबर, 2022

androidx.fragment:fragment:1.5.4, androidx.fragment:fragment-ktx:1.5.4, और androidx.fragment:fragment-testing:1.5.4 रिलीज़ किए गए हैं. वर्शन 1.5.4 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • हमने उस गड़बड़ी को ठीक कर दिया है जिसमें, कस्टम FragmentController का इस्तेमाल करने पर, चाइल्ड फ़्रैगमेंट को डिसपैच नहीं किया जा रहा था. ऐसा तब हो रहा था, जब होस्ट ने प्रोवाइडर कॉलबैक इंटरफ़ेस (OnConfigurationChangedProvider, OnMultiWindowModeChangedProvider, OnTrimMemoryProvider, OnPictureInPictureModeChangedProvider) लागू नहीं किया था और उसके डेप्रिकेट किए गए डिसपैच फ़ंक्शन को कॉल किया जा रहा था. (I9b380)

वर्शन 1.5.3

21 सितंबर, 2022

androidx.fragment:fragment:1.5.3, androidx.fragment:fragment-ktx:1.5.3, और androidx.fragment:fragment-testing:1.5.3 रिलीज़ किए गए हैं. वर्शन 1.5.3 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • हमने उस गड़बड़ी को ठीक कर दिया है जिसकी वजह से, बैक स्टैक पर मौजूद फ़्रैगमेंट को onMultiWindowModeChanged(), onPictureInPictureModeChanged(), onLowMemory(), और onConfigurationChanged() कॉलबैक मिलते थे. (I34581, I8dfe6, b/242570955)
  • नेस्ट किए गए चाइल्ड फ़्रैगमेंट को अब एक से ज़्यादा onMultiWindowModeChanged(), onPictureInPictureModeChanged(), onLowMemory() या onConfigurationChanged() कॉलबैक नहीं मिलेंगे. (I690b3, Id0096, If9d6b, I2cba2)

संस्‍करण 1.5.2

10 अगस्त, 2022

androidx.fragment:fragment:1.5.2, androidx.fragment:fragment-ktx:1.5.2, और androidx.fragment:fragment-testing:1.5.2 रिलीज़ किए गए हैं. वर्शन 1.5.2 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • उस समस्या को ठीक किया गया है जिसमें एक ही समय पर popBackStack() और replace() लेन-देन करने पर, बाहर निकलने वाले फ़्रैगमेंट गलत Animation/Animator को चलाते थे. (Ib1c07, b/214835303)

संस्‍करण 1.5.1

27 जुलाई, 2022

androidx.fragment:fragment:1.5.1, androidx.fragment:fragment-ktx:1.5.1, और androidx.fragment:fragment-testing:1.5.1 रिलीज़ किए गए हैं. वर्शन 1.5.1 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • DialogFragmentCallbacksDetector में हुई रिग्रेशन की समस्या को ठीक किया गया है. इस समस्या की वजह से, AGP 7.4 के साथ बंडल किए गए लिंट वर्शन का इस्तेमाल करने पर, लिंट क्रैश हो जाता था. (b/237567009)

डिपेंडेंसी अपडेट करना

  • Fragment लाइब्रेरी अब Lifecycle 2.5.1 पर निर्भर करती है. (Id204c)
  • Fragment लाइब्रेरी अब Activity 1.5.1 पर निर्भर करती है. (I10f07)

वर्शन 1.5.0

29 जून, 2022

androidx.fragment:fragment:1.5.0, androidx.fragment:fragment-ktx:1.5.0, और androidx.fragment:fragment-testing:1.5.0 रिलीज़ किए गए हैं. वर्शन 1.5.0 में ये बदलाव शामिल हैं.

1.4.0 के बाद हुए अहम बदलाव

  • CreationExtras इंटिग्रेशन - Fragment अब Lifecycle 2.5.0 के CreationExtras के ज़रिए, स्टेटलेस ViewModelProvider.Factory उपलब्ध करा सकता है.
  • कॉम्पोनेंट डायलॉग इंटिग्रेशन - DialogFragment अब ComponentDialog का इस्तेमाल करता है. onCreateDialog() से मिले डिफ़ॉल्ट डायलॉग के तौर पर, ऐक्टिविटी 1.5.0 का इस्तेमाल किया जाता है.
  • सेव किए गए इंस्टेंस की स्थिति को फिर से व्यवस्थित करना - फ़्रैगमेंट, इंस्टेंस की स्थिति को सेव करने के तरीके में बदलाव करने लगे हैं. इससे यह साफ़ तौर पर पता लगाने में मदद मिलती है कि फ़्रैगमेंट में कौनसी स्थिति सेव की गई है और स्थिति का सोर्स क्या है. मौजूदा बदलावों में ये शामिल हैं:
    • FragmentManager अब अपने सेव किए गए इंस्टेंस की स्थिति को सीधे कस्टम Parcelable में सेव करने के बजाय, Bundle में सेव करता है.
    • Fragment Result APIs के ज़रिए सेट किए गए ऐसे नतीजे जिन्हें अब तक डिलीवर नहीं किया गया है उन्हें अब FragmentManager की इंटरनल स्थिति से अलग सेव किया जाता है.
    • अब हर फ़्रैगमेंट से जुड़ी स्थिति को FragmentManager की इंटरनल स्थिति से अलग सेव किया जाता है. इससे, किसी फ़्रैगमेंट से जुड़ी सेव की गई स्थिति की मात्रा को Fragment की डीबग लॉगिंग में मौजूद यूनीक आईडी से जोड़ा जा सकता है.

अन्य बदलाव

  • FragmentStrictMode अब तीसरे पक्ष के निजी फ़्रैगमेंट को, क्लास के नाम के साथ allowViolation() का इस्तेमाल करके, उल्लंघन से जुड़ी कुछ खास पाबंदियों को बायपास करने की सुविधा देता है.
  • आपकी गतिविधि के ActionBar को मेन्यू उपलब्ध कराने वाले Fragment API अब काम नहीं करते. ऐक्टिविटी 1.4.0 में जोड़े गए MenuHost और MenuProvider एपीआई, टेस्ट किए जा सकने वाले और लाइफ़साइकल के बारे में जानकारी देने वाले एपीआई की सतह उपलब्ध कराते हैं. फ़्रैगमेंट को इनका इस्तेमाल करना चाहिए.

वर्शन 1.5.0-rc01

11 मई, 2022

androidx.fragment:fragment:1.5.0-rc01, androidx.fragment:fragment-ktx:1.5.0-rc01, और androidx.fragment:fragment-testing:1.5.0-rc01 रिलीज़ किए गए हैं. वर्शन 1.5.0-rc01 में ये बदलाव शामिल हैं.

Saved Instance State Refactoring

  • अब हर फ़्रैगमेंट से जुड़ी स्थिति को FragmentManager की इंटरनल स्थिति से अलग सेव किया जाता है. इससे, किसी फ़्रैगमेंट से जुड़ी सेव की गई स्थिति की मात्रा को फ़्रैगमेंट की डीबग लॉगिंग में मौजूद यूनीक आईडी से जोड़ा जा सकता है. (a153e0, b/207158202)

वर्शन 1.5.0-beta01

20 अप्रैल, 2022

androidx.fragment:fragment:1.5.0-beta01, androidx.fragment:fragment-ktx:1.5.0-beta01, और androidx.fragment:fragment-testing:1.5.0-beta01 रिलीज़ किए गए हैं. वर्शन 1.5.0-beta01 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • DialogFragment ने एक नया dismissNow तरीका जोड़ा है. यह showNow फ़ंक्शन के साथ समानता बनाए रखने के लिए, commitNow का इस्तेमाल करता है. ध्यान दें कि इससे Dialog तुरंत बंद नहीं होगा. इससे सिर्फ़ FragmentManager की स्थिति को सिंक्रोनस तरीके से अपडेट किया जाएगा. (I15c36, b/72644830)

Saved Instance State Refactoring

  • FragmentManager अब अपने सेव किए गए इंस्टेंस की स्थिति को सीधे कस्टम Parcelable में सेव करने के बजाय, Bundle में सेव करता है. यह पहला कदम है. इससे यह पता चलेगा कि फ़्रैगमेंट में कौनसी जानकारी सेव की जा रही है. (I93807, b/207158202)
  • फ़्रैगमेंट के नतीजों से जुड़े एपीआई के ज़रिए सेट किए गए ऐसे नतीजे जिन्हें अब तक डिलीवर नहीं किया गया है उन्हें अब FragmentManager की इंटरनल स्थिति से अलग सेव किया जाता है. इससे आपको यह जानने में मदद मिलेगी कि सेव किए गए इंस्टेंस की स्थिति के तौर पर कौनसे नतीजे सेव किए जा रहे हैं. (I6ea12, b/207158202)

वर्शन 1.5.0-alpha05

6 अप्रैल, 2022

androidx.fragment:fragment:1.5.0-alpha05, androidx.fragment:fragment-ktx:1.5.0-alpha05, और androidx.fragment:fragment-testing:1.5.0-alpha05 रिलीज़ किए गए हैं. वर्शन 1.5.0-alpha05 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • Fragment के setHasOptionsMenu() का अब इस्तेमाल नहीं किया जा सकता. मेन्यू और उनके मेन्यू आइटम को मैनेज करने के लिए, नए मेन्यू एपीआई का इस्तेमाल किया जाना चाहिए. इस बारे में Fragment 1.5.0-alpha04 रिलीज़ नोट में बताया गया है. (I7b4b4, b/226438239)

वर्शन 1.5.0-alpha04

23 मार्च, 2022

androidx.fragment:fragment:1.5.0-alpha04, androidx.fragment:fragment-ktx:1.5.0-alpha04, और androidx.fragment:fragment-testing:1.5.0-alpha04 रिलीज़ किए गए हैं. वर्शन 1.5.0-alpha04 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • आपकी गतिविधि के ActionBar को मेन्यू उपलब्ध कराने के लिए, फ़्रैगमेंट एपीआई का इस्तेमाल बंद कर दिया गया है. ऐसा इसलिए, क्योंकि ये एपीआई आपके फ़्रैगमेंट को आपकी गतिविधि से जोड़ते हैं और इन्हें अलग से टेस्ट नहीं किया जा सकता. Activity 1.4.0-alpha01 में जोड़े गए MenuHost और MenuProvider एपीआई, टेस्ट किए जा सकने वाले और लाइफ़साइकल के बारे में जानकारी देने वाले एपीआई की सतह उपलब्ध कराते हैं. फ़्रैगमेंट को इनका इस्तेमाल करना चाहिए. (I50a59, I20758)

गड़बड़ियां ठीक की गईं

  • SavedStateViewFactory में अब CreationExtras का इस्तेमाल किया जा सकता है. भले ही, इसे SavedStateRegistryOwner से शुरू किया गया हो. अगर एक्सट्रा दिए जाते हैं, तो शुरू किए गए आर्ग्युमेंट को अनदेखा कर दिया जाता है. (I6c43b, b/224844583)

वर्शन 1.5.0-alpha03

23 फ़रवरी, 2022

androidx.fragment:fragment:1.5.0-alpha03, androidx.fragment:fragment-ktx:1.5.0-alpha03, और androidx.fragment:fragment-testing:1.5.0-alpha03 रिलीज़ किए गए हैं. वर्शन 1.5.0-alpha03 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • अब by viewModels() और by activityViewModels() फ़ंक्शन में CreationExtras को पास किया जा सकता है. (Ibefe7, b/217601110)

व्यवहार में बदलाव

  • DialogFragment अब ComponentDialog का इस्तेमाल, onCreateDialog() से मिले डिफ़ॉल्ट डायलॉग के तौर पर करता है. (If3784, b/217618170)

वर्शन 1.5.0-alpha02

9 फ़रवरी, 2022

androidx.fragment:fragment:1.5.0-alpha02, androidx.fragment:fragment-ktx:1.5.0-alpha02, और androidx.fragment:fragment-testing:1.5.0-alpha02 रिलीज़ किए गए हैं. वर्शन 1.5.0-alpha02 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • FragmentStrictMode अब तीसरे पक्ष के निजी फ़्रैगमेंट को, क्लास के नाम के साथ allowViolation() का इस्तेमाल करके, उल्लंघन से जुड़ी कुछ खास पाबंदियों को बायपास करने की सुविधा देता है. (I8f678)

वर्शन 1.5.0-alpha01

26 जनवरी, 2022

androidx.fragment:fragment:1.5.0-alpha01, androidx.fragment:fragment-ktx:1.5.0-alpha01, और androidx.fragment:fragment-testing:1.5.0-alpha01 रिलीज़ किए गए हैं. वर्शन 1.5.0-alpha01 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • Fragment को अब ViewModel CreationExtras के साथ इंटिग्रेट किया गया है. इसे Lifecycle 2.5.0-alpha01 के हिस्से के तौर पर लॉन्च किया गया था. (I3060b, b/207012585)

गड़बड़ियां ठीक की गईं

  • फ़्रैगमेंट 1.4.1 से: FragmentContainerView अब ऐसी स्थिति में कोई गैर-कानूनी स्टेट एक्सेप्शन नहीं दिखाता है, जब एक्सएमएल से जनरेट किए गए व्यू आईडी की वैल्यू नेगेटिव होती हैं. (Ic185b, b/213086140)
  • फ़्रैगमेंट 1.4.1 से: by viewModels() लेज़ी फ़ंक्शन के साथ कस्टम ownerProducer लैम्डा का इस्तेमाल करने पर, अगर कस्टम ViewModelProvider.Factory नहीं दिया जाता है, तो यह हमेशा फ़्रैगमेंट के फ़ैक्ट्री का इस्तेमाल करने के बजाय, उस मालिक के defaultViewModelProviderFactory का इस्तेमाल करेगा. (I56170, b/214106513)
  • Fragment के registerForActivityResult() कॉलबैक से पहली बार ViewModel को ऐक्सेस करने पर होने वाली क्रैश की समस्या को ठीक किया गया. (Iea2b3)

वर्शन 1.4

वर्शन 1.4.1

26 जनवरी, 2022

androidx.fragment:fragment:1.4.1, androidx.fragment:fragment-ktx:1.4.1, और androidx.fragment:fragment-testing:1.4.1 रिलीज़ किए गए हैं. वर्शन 1.4.1 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • FragmentContainerView अब एक्सएमएल से जनरेट किए गए व्यू आईडी में नेगेटिव वैल्यू होने पर, अमान्य स्थिति का अपवाद नहीं दिखाता है. (Ic185b, b/213086140)
  • by viewModels() लेज़ी फ़ंक्शन के साथ कस्टम ownerProducer लैम्डा का इस्तेमाल करने पर, अब यह फ़्रैगमेंट के फ़ैक्ट्री का इस्तेमाल करने के बजाय, उस मालिक के defaultViewModelProviderFactory का इस्तेमाल करेगा. ऐसा तब होगा, जब कस्टम ViewModelProvider.Factory उपलब्ध नहीं कराया गया हो. (I56170, b/214106513)

वर्शन 1.4.0

17 नवंबर, 2021

androidx.fragment:fragment:1.4.0, androidx.fragment:fragment-ktx:1.4.0, और androidx.fragment:fragment-testing:1.4.0 रिलीज़ किए गए हैं. वर्शन 1.4.0 में ये बदलाव शामिल हैं.

1.3.0 के बाद हुए अहम बदलाव

  • FragmentStrictMode एपीआई, रनटाइम जांच की सुविधा देते हैं. इससे यह पुष्टि की जा सकती है कि आपका ऐप्लिकेशन या जिन लाइब्रेरी पर आपका ऐप्लिकेशन निर्भर करता है वे फ़्रैगमेंट के बंद किए जा चुके एपीआई को कॉल नहीं कर रही हैं. उल्लंघन का पता चलने पर, लॉग मैसेज प्रिंट किया जा सकता है, कस्टम लिसनर को ट्रिगर किया जा सकता है या ऐप्लिकेशन को क्रैश किया जा सकता है. FragmentStrictMode.Policy यह कंट्रोल करता है कि कौनसी जांचें चालू हैं और कौनसे “जुर्माने” ट्रिगर किए गए हैं. इसे setStrictModePolicy() तरीके का इस्तेमाल करके, FragmentManager पर सेट किया जा सकता है. यह नीति, उस FragmentManager पर लागू होती है. साथ ही, यह उन सभी चाइल्ड फ़्रैगमेंट मैनेजर पर भी लागू होती है जो अपनी यूनीक नीति सेट नहीं करते हैं. फ़्रैगमेंट के लिए StrictMode देखें.
  • FragmentContainerView अब getFragment() मेथड उपलब्ध कराता है. यह मेथड, कंटेनर में सबसे हाल ही में जोड़े गए फ़्रैगमेंट को दिखाता है. यह findFragmentById() के आईडी के साथ FragmentContainerView के लॉजिक का इस्तेमाल करता है. हालांकि, इससे कॉल को चेन करने की अनुमति मिलती है.

    val navController = binding.container.getFragment<NavHostFragment>().navController
    
  • FragmentScenario अब Closeable को लागू करता है. इससे आपको Kotlin के use तरीके या try-with-resources का इस्तेमाल करने की अनुमति मिलती है.

  • जोड़ा गया FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE} यह तय करने के लिए कि फ़्रैगमेंट ट्रांज़िशन में, आपकी थीम से लिया गया स्टैंडर्ड ऐक्टिविटी-ट्रांज़िशन ऐनिमेशन चालू करना है या नहीं.

  • FragmentManager.enableNewStateManager(boolean) के एक्सपेरिमेंटल एपीआई को हटा दिया गया है. अब सिर्फ़ नया स्टेट मैनेजर उपलब्ध है.

एक से ज़्यादा बैक स्टैक

FragmentManager, फ़्रैगमेंट लेन-देन से बना पिछली गतिविधियां बनाए रखता है. इसमें addToBackStack() का इस्तेमाल किया जाता है. इससे आपको उन ट्रांज़ैक्शन को पॉप करने और पिछली स्थिति पर वापस जाने की सुविधा मिलती है. इसके लिए, फ़्रैगमेंट के साथ स्थिति सेव करने के तरीकों का इस्तेमाल किया जाता है, ताकि आपके फ़्रैगमेंट अपनी स्थिति को सही तरीके से वापस ला सकें.

इस रिलीज़ में, इन तरीकों को बेहतर बनाया गया है. इसके लिए, तीन नए FragmentManager एपीआई उपलब्ध कराए गए हैं: saveBackStack(String name), restoreBackStack(String name), और clearBackStack(String name). ये एपीआई, FragmentTransaction की स्थिति और उन लेन-देन में जोड़े गए हर फ़्रैगमेंट की स्थिति को सेव करने के लिए, addToBackStack() की तरह ही name का इस्तेमाल करते हैं. साथ ही, आपको बाद में उन लेन-देन और उनके फ़्रैगमेंट को उनकी स्थिति के साथ वापस लाने की अनुमति देते हैं. इससे मौजूदा पिछली गतिविधियों को सेव करके और सेव की गई पिछली गतिविधियों को वापस लाकर, कई पिछली गतिविधियों के बीच आसानी से ‘स्वैप’ किया जा सकता है.

saveBackStack(), popBackStack() की तरह ही काम करता है. यह एसिंक्रोनस होता है. इससे उस नाम के सभी फ़्रैगमेंट ट्रांज़ैक्शन वापस हो जाते हैं (‘पॉप’ हो जाते हैं). साथ ही, जोड़े गए सभी फ़्रैगमेंट मिट जाते हैं और हट जाते हैं. हालांकि, यह कुछ ज़रूरी मामलों में अलग होता है:

  • saveBackStack() हमेशा सभी को साथ लेकर चलता है.
  • popBackStack() के उलट, saveBackStack() कुछ नहीं करता. , बैक स्टैक में मौजूद सभी लेन-देन को पॉप अप कर देगा. ऐसा तब होगा, जब बैक स्टैक में दिया गया नाम नहीं मिलता है या शून्य नाम दिया जाता है. हालांकि, ऐसा तब तक नहीं करेगा, जब तक आपने addToBackStack() का इस्तेमाल करके, उसी नाम से कोई फ़्रैगमेंट लेन-देन पहले से नहीं किया हो.
  • उन लेन-देन से जोड़े गए सभी फ़्रैगमेंट की स्थिति सेव की जाती है. इसका मतलब है कि हर फ़्रैगमेंट की व्यू स्टेट सेव की जाती है, हर फ़्रैगमेंट के onSaveInstanceState() को कॉल किया जाता है और उस स्टेट को वापस लाया जाता है. साथ ही, उन फ़्रैगमेंट से जुड़े किसी भी ViewModel इंस्टेंस को बनाए रखा जाता है और उन पर onCleared() को नहीं कॉल किया जाता है.

saveBackStack() के साथ इस्तेमाल किए जा सकने वाले फ़्रैगमेंट लेन-देन को कुछ शर्तें पूरी करनी होंगी:

  • हर फ़्रैगमेंट ट्रांज़ैक्शन में setReorderingAllowed(true) का इस्तेमाल करना ज़रूरी है, ताकि ट्रांज़ैक्शन को एक ही एटॉमिक ऑपरेशन के तौर पर वापस लाया जा सके.
  • सेव किए गए लेन-देन का सेट, खुद में शामिल होना चाहिए. इसका मतलब है कि उन्हें लेन-देन के उस सेट से बाहर के किसी भी फ़्रैगमेंट का साफ़ तौर पर रेफ़रंस नहीं देना चाहिए. इससे यह पक्का किया जा सकेगा कि उन्हें बाद में कभी भी रीस्टोर किया जा सकता है. भले ही, इस दौरान पिछली गतिविधियों में कोई भी बदलाव किया गया हो.
  • सेव किए गए किसी भी फ़्रैगमेंट को बनाए रखा गया फ़्रैगमेंट नहीं होना चाहिए. साथ ही, उसके ट्रांज़िटिव सेट में बनाए रखा गया कोई चाइल्ड फ़्रैगमेंट नहीं होना चाहिए. इससे यह पक्का किया जा सकेगा कि पिछली गतिविधियां सेव होने के बाद, FragmentManager सेव किए गए फ़्रैगमेंट के कोई भी रेफ़रंस न दिखाए.

saveBackStack(), restoreBackStack(), और clearBackStack() की तरह ही, अगर आपने पहले saveBackStack() को उसी नाम से कॉल नहीं किया है, तो ये दोनों फ़ंक्शन कुछ नहीं करेंगे. से पहले से सेव की गई पिछली गतिविधियां वापस लाई जाती हैं, जबकि से पहले से सेव की गई पिछली गतिविधियां मिटाई जाती हैं.

ज़्यादा जानकारी के लिए, एक से ज़्यादा बैक स्टैक: ज़्यादा जानकारी लेख पढ़ें.

वर्शन 1.4.0-rc01

3 नवंबर, 2021

androidx.fragment:fragment:1.4.0-rc01 को Fragment 1.4.0-beta01 के बाद से बिना किसी बदलाव के रिलीज़ किया गया है. वर्शन 1.4.0-rc01 में ये बदलाव शामिल हैं.

वर्शन 1.4.0-beta01

27 अक्टूबर, 2021

androidx.fragment:fragment:1.4.0-beta01, androidx.fragment:fragment-ktx:1.4.0-beta01, और androidx.fragment:fragment-testing:1.4.0-beta01 रिलीज़ किए गए हैं. वर्शन 1.4.0-beta01 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • अब पैरंट फ़्रैगमेंट, अपने कॉलबैक को लॉन्च करने से पहले, अपनी पूरी हैरारकी में onHiddenChanged() को डिसपैच करेंगे. (Iedc20, b/77504618)
  • कीबोर्ड अब अपने-आप बंद हो जाएगा. ऐसा तब होगा, जब खुले हुए कीबोर्ड वाले फ़्रैगमेंट से रीसाइकलर व्यू वाले फ़्रैगमेंट पर जाया जाएगा. (I8b842, b/196852211)
  • DialogFragment अब show(), showNow() या dismiss() को कॉल करने पर, बनाए गए सभी लेन-देन के लिए setReorderingAllowed(true) का इस्तेमाल करता है. (Ie2c14)
  • DetachAndAttachFragmentInSameFragmentTransaction की बहुत लंबी Lint चेतावनी को छोटा करके DetachAndAttachSameFragment कर दिया गया है. (e9eca3)

वर्शन 1.4.0-alpha10

29 सितंबर, 2021

androidx.fragment:fragment:1.4.0-alpha10, androidx.fragment:fragment-ktx:1.4.0-alpha10, और androidx.fragment:fragment-testing:1.4.0-alpha10 रिलीज़ किए गए हैं. वर्शन 1.4.0-alpha10 में ये बदलाव शामिल हैं.

लिंट

  • FragmentTransaction में मौजूद एक ही Fragment पर detach() और attach(), दोनों को कॉल करने का पता लगाने के लिए, DetachAndAttachFragmentInSameFragmentTransaction लिंट चेतावनी जोड़ी गई है. ऐसा इसलिए, क्योंकि एक ही लेन-देन में ये दोनों कार्रवाइयां एक-दूसरे को रद्द कर देती हैं. इसलिए, इन्हें अलग-अलग लेन-देन में बांटना ज़रूरी है, ताकि ये कार्रवाइयां सही तरीके से हो सकें. (aosp/1832956, b/200867930)
  • MenuHost के addMenuProvider एपीआई का इस्तेमाल करते समय, Fragment Lifecycle के इस्तेमाल को Fragment view Lifecycle में बदलने के लिए, FragmentAddMenuProvider लिंट की गड़बड़ी को जोड़ा गया है. (aosp/1830457, b/200326272)

दस्तावेज़ से जुड़े अपडेट

  • Activity Result API के ज़रिए मैनेज किए जाने वाले एपीआई के लिए, बंद होने की सूचना देने वाले मैसेज में ज़्यादा जानकारी जोड़ी गई है. ये एपीआई हैं: startActivityForResult, startIntentSenderForResult, onActivityResult, requestPermissions, और onRequestPermissionsResult. (cce80f)
  • onActivityCreated() और DialogFragment, दोनों के लिए Fragment को बंद करने से जुड़ा मैसेज, ज़्यादा जानकारी के साथ बड़ा कर दिया गया है. (224db4)

वर्शन 1.4.0-alpha09

15 सितंबर, 2021

androidx.fragment:fragment:1.4.0-alpha09, androidx.fragment:fragment-ktx:1.4.0-alpha09, और androidx.fragment:fragment-testing:1.4.0-alpha09 रिलीज़ किए गए हैं. वर्शन 1.4.0-alpha09 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • अब clearBackStack(name) को कॉल करके, saveBackStack(name) के साथ पहले से सेव की गई किसी भी स्थिति को मिटाया जा सकता है. (I70cd7)

एपीआई में हुए बदलाव

  • FragmentContainerView क्लास को Kotlin में फिर से लिखा गया है. इससे यह पक्का होता है कि getFragment फ़ंक्शन, शून्य होने की स्थिति का सही तरीके से पालन करेगा. (If694a, b/189629145)
  • FragmentStrictMode को अब Kotlin में लिखा गया है (I11767, b/199183506)

गड़बड़ियां ठीक की गईं

  • उस समस्या को ठीक कर दिया गया है जिसमें setReorderingAllowed(true) का इस्तेमाल करके जोड़े गए फ़्रैगमेंट की स्थिति को ठीक से साफ़ नहीं किया जाता था. ऐसा तब होता था, जब लंबित लेन-देन पूरे होने से पहले ही उसे तुरंत हटा दिया जाता था. (I8ccb8)

वर्शन 1.4.0-alpha08

1 सितंबर, 2021

androidx.fragment:fragment:1.4.0-alpha08, androidx.fragment:fragment-ktx:1.4.0-alpha08, और androidx.fragment:fragment-testing:1.4.0-alpha08 रिलीज़ किए गए हैं. वर्शन 1.4.0-alpha08 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • UseRequireInsteadOfGet Lint check की सुविधा को बेहतर बनाया गया है, ताकि फ़ालतू पैरंटheses को बेहतर तरीके से मैनेज किया जा सके. (I2d865)
  • UseGetLayoutInflater Lint check को बेहतर बनाया गया है, ताकि ज़्यादा से ज़्यादा एज केस को हैंडल किया जा सके. (Ie5423)

वर्शन 1.4.0-alpha07

18 अगस्त, 2021

androidx.fragment:fragment:1.4.0-alpha07, androidx.fragment:fragment-ktx:1.4.0-alpha07, और androidx.fragment:fragment-testing:1.4.0-alpha07 को बिना किसी खास बदलाव के रिलीज़ किया गया है. वर्शन 1.4.0-alpha07 में ये बदलाव शामिल हैं.

वर्शन 1.4.0-alpha06

4 अगस्त, 2021

androidx.fragment:fragment:1.4.0-alpha06, androidx.fragment:fragment-ktx:1.4.0-alpha06, और androidx.fragment:fragment-testing:1.4.0-alpha06 रिलीज़ किए गए हैं. वर्शन 1.4.0-alpha06 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • बैक स्टैक के बीच तेज़ी से स्विच करने पर, कई बैकस्टैक से जुड़ी समस्या को ठीक किया गया है. इससे, FragmentTransaction को पहले जैसा करते समय IllegalStateException दिखता था या फ़्रैगमेंट की दूसरी कॉपी दिखती थी. (I9039f)
  • उस समस्या को ठीक किया गया है जिसमें FragmentManager, saveBackStack() के ज़रिए पहले से सेव किए गए स्टेट की कॉपी को तब भी सेव रखता था, जब उस स्टेट को वापस ला दिया जाता था. (Ied212)
  • show(FragmentTransaction, String) तरीके से DialogFragment को जोड़ने के बाद, स्थिति सेव होने पर DialogFragment तरीके को कॉल करने पर, अब dismissAllowingStateLoss() तरीका क्रैश नहीं होता. (I84422)

वर्शन 1.4.0-alpha05

21 जुलाई, 2021

androidx.fragment:fragment:1.4.0-alpha05, androidx.fragment:fragment-ktx:1.4.0-alpha05, और androidx.fragment:fragment-testing:1.4.0-alpha05 रिलीज़ किए गए हैं. वर्शन 1.4.0-alpha05 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • फ़्रैगमेंट 1.3.6 से: रूट व्यू में transitionGroup=”true” सेट होने पर, hide() का इस्तेमाल करते समय फ़्रैगमेंट का व्यू अब GONE पर सेट हो गया है. (aosp/1766655, b/193603427)
  • फ़्रैगमेंट 1.3.6 से: FragmentActivity अब हमेशा सेव किए गए स्टेट को अनलॉक करता है. ऐसा इसलिए, क्योंकि यह लाइफ़साइकल के कॉल बैक में पहला ऑपरेशन होता है. यह इसे बदल देता है. (I6db7a)

डिपेंडेंसी अपडेट करना

वर्शन 1.4.0-alpha04

30 जून, 2021

androidx.fragment:fragment:1.4.0-alpha04, androidx.fragment:fragment-ktx:1.4.0-alpha04, और androidx.fragment:fragment-testing:1.4.0-alpha04 रिलीज़ किए गए हैं. वर्शन 1.4.0-alpha04 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • FragmentManager अब अपनी स्थिति को सेव करने के लिए, बैकग्राउंड में SavedStateRegistry का इस्तेमाल करता है. FragmentController में saveAllState() और restoreSavedState() तरीकों को भी बंद कर दिया गया है. अगर FragmentActivity के बाहर फ़्रैगमेंट होस्ट करने के लिए FragmentController का इस्तेमाल किया जा रहा है, तो आपको FragmentHostCallbacks में SavedStateRegistryOwner लागू करना होगा. (Iba68e, b/188734238)

गड़बड़ियां ठीक की गईं

  • हमने उस समस्या को ठीक किया है जिसमें एक साथ कई बैक स्टैक को सपोर्ट करने के लिए, saveBackStack() को कॉल करने पर गड़बड़ी होती थी. ऐसा तब होता था, जब replace() का इस्तेमाल करने वाले FragmentTransaction को एक साथ चलाया जाता था. (I73137)
  • हमने NullPointerException को ठीक किया है. यह समस्या तब होती थी, जब restoreBackStack() एपीआई का इस्तेमाल करके, एक से ज़्यादा बैक स्टैक के लिए सहायता पाने के दौरान, सेव किए गए बैक स्टैक को मैन्युअल तरीके से वापस लाया जाता था. इस बैक स्टैक में कई लेन-देन शामिल होते थे. इस अपडेट में, एक समस्या को भी ठीक किया गया है. इस समस्या में, सभी लेन-देन के लिए setReorderingAllowed(true) की जांच नहीं की जा रही थी. (I8c593)
  • उस समस्या को ठीक किया गया है जिसमें FragmentManager, फ़्रैगमेंट की पहले से सेव की गई स्थिति को गलत तरीके से वापस लाता रहता था. ऐसा तब होता था, जब उन फ़्रैगमेंट को FragmentManager से हटा दिया जाता था. इस वजह से, सेव की गई स्थिति का साइज़ समय के साथ बढ़ता रहता था. (I1fb8e)

वर्शन 1.4.0-alpha03

16 जून, 2021

androidx.fragment:fragment:1.4.0-alpha03, androidx.fragment:fragment-ktx:1.4.0-alpha03, और androidx.fragment:fragment-testing:1.4.0-alpha03 रिलीज़ किए गए हैं. वर्शन 1.4.0-alpha03 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • सभी Fragment StrictMode Violation क्लास को अपडेट कर दिया गया है. इनमें गड़बड़ी के बारे में ज़्यादा जानकारी देने वाले मैसेज शामिल हैं. इनसे उल्लंघन के बारे में ज़्यादा जानकारी मिलती है. (b/187871638)
    • FragmentTagUsageViolation में अब गड़बड़ी के बारे में ज़्यादा जानकारी वाला मैसेज शामिल है. इसमें उस पैरंट कंटेनर की जानकारी भी शामिल है जिसमें फ़्रैगमेंट जोड़ा जाना था. (Ic33a7)
    • WrongFragmentContainerViolation में अब गड़बड़ी के बारे में ज़्यादा जानकारी देने वाला मैसेज दिखता है. इसमें उस कंटेनर की जानकारी भी शामिल होती है जिसमें फ़्रैगमेंट जोड़ा जा रहा था. (Ib55f8)
    • TargetFragmentUsageViolation के इस्तेमाल के उदाहरणों के लिए, अब गड़बड़ी के बारे में ज़्यादा जानकारी देने वाले मैसेज उपलब्ध हैं. इनमें उल्लंघन करने वाले फ़्रैगमेंट और उससे जुड़ी अन्य जानकारी शामिल है. (Icc6ac)
    • RetainInstanceUsageViolation को बढ़ाने वाली क्लास में अब गड़बड़ी की ज़्यादा जानकारी वाले मैसेज शामिल हैं. इनमें उल्लंघन करने वाला फ़्रैगमेंट भी शामिल है. (I6bd55)
    • FragmentReuseViolation में अब गड़बड़ी के बारे में ज़्यादा जानकारी देने वाला मैसेज दिखता है. इसमें फ़्रैगमेंट का पिछला आईडी भी शामिल होता है. (I28ce2)
    • SetUserVisibleHintViolation में अब गड़बड़ी के बारे में ज़्यादा जानकारी देने वाला मैसेज दिखता है. इसमें यह भी शामिल होता है कि उपयोगकर्ता को दिखने वाला हिंट किस पर सेट किया जा रहा था. (Ib2d5f)

व्यवहार में बदलाव

  • FragmentContainerView पर fitsSystemWindows को कॉल करने पर लगी पाबंदी हटा दी गई है. अब आपका ऐप्लिकेशन क्रैश नहीं होगा. (6b8ddd, b/190622202)

गड़बड़ियां ठीक की गईं

  • Fragment 1.3.5: aosp/1679887 ने Fragment 1.3.4 में शेयर किए गए एलिमेंट के ट्रांज़िशन में हुई रिग्रेशन की समस्या को ठीक किया. अब फ़्रैगमेंट, ट्रांज़िशन ग्रुप को सही तरीके से हैंडल करते हैं. इन्हें सीधे तौर पर transitionGroup="true" के ज़रिए या परोक्ष रूप से transitionName या background के ज़रिए सेट किया जाता है. साथ ही, शेयर किए गए एलिमेंट अब IndexOutOfBoundsException नहीं दिखाएंगे. (I16484, b/188679569, b/188969304)
  • अब फ़्रैगमेंट को छिपाने या हटाने की कोशिश करने पर, FragmentManager क्रैश नहीं होगा. (I573dd, b/183634730)
  • टॉप लेवल के वैरिएबल का आकलन करते समय, OnCreateDialogIncorrectCallback लिंट चेक अब क्रैश नहीं होगा. (0a9efa, b/189967522)

वर्शन 1.4.0-alpha02

2 जून, 2021

androidx.fragment:fragment:1.4.0-alpha02, androidx.fragment:fragment-ktx:1.4.0-alpha02, और androidx.fragment:fragment-testing:1.4.0-alpha02 रिलीज़ किए गए हैं. वर्शन 1.4.0-alpha02 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • FragmentStrictMode अब हमेशा उल्लंघन लॉग करेगा. ऐसा तब होगा, जब FragmentManager के ज़रिए लॉगिंग की सुविधा चालू की गई हो. भले ही, स्ट्रिक्ट मोड की मौजूदा नीति का इस्तेमाल किया जा रहा हो. (I02df6, b/187872638)
  • FragmentStrictMode अब कुछ Fragment क्लास को स्ट्रिक्ट मोड Violation से बाहर रखने की सुविधा देता है. इससे उन क्लास पर कोई जुर्माना नहीं लगता. (Ib4e5d, b/184786736)

  • FragmentStrictMode Violation क्लास को बड़ा किया गया है, ताकि हर उल्लंघन के आधार पर स्ट्रक्चर की जानकारी जोड़ी जा सके. इससे आपको यह पुष्टि करने में मदद मिलती है कि किस वजह से उल्लंघन हुआ है. साथ ही, उल्लंघन करने वाले फ़्रैगमेंट (If5118, b/187871150) के बारे में भी पता चलता है. हर Violation में यह जानकारी शामिल होती है:

    • WrongFragmentContainerViolation में अब ViewGroup शामिल है. Fragment को इसमें जोड़ने की कोशिश की जा रही थी. (I83c75, b/187871150)
    • TargetFragmentUsageViolation को SetTargetFragmentUsageViolation, GetTargetFragmentUsageViolation, और GetTargetFragmentRequestCodeUsageViolation में बांटा गया है. SetTargetFragmentUsageViolation में टारगेट फ़्रैगमेंट और अनुरोध कोड शामिल है. (I741b4, b/187871150)
    • SetUserVisibleHintViolation में अब setUserVisibleHint() में पास की गई बूलियन वैल्यू शामिल है. (I00585, b/187871150)
    • FragmentTagUsageViolation में अब वह ViewGroup शामिल है जिसमें <fragment> टैग, फ़्रैगमेंट को बड़ा करने की कोशिश कर रहा था.(I5dbbc, b/187871150)
    • FragmentReuseViolation में अब Fragment के पिछले इंस्टेंस का यूनीक आईडी शामिल है. इसी इंस्टेंस की वजह से उल्लंघन हुआ था. (I0544d, b/187871150)
    • RetainInstanceUsageViolation अब ऐब्स्ट्रैक्ट है और इसकी दो सबक्लास हैं, SetRetainInstanceUsageViolation और GetRetainInstanceUsageViolation. ये दोनों, उल्लंघन के टाइप के दो मामलों को दिखाती हैं. (Ic81e5, b/187871150)

व्यवहार में बदलाव

  • FragmentContainerView अब fitsSystemWindow एट्रिब्यूट को प्रोग्राम के हिसाब से या एक्सएमएल के ज़रिए बदलने की कोशिश करने पर, अपवाद दिखाता है. हर फ़्रैगमेंट के व्यू को इनसेट मैनेज करने चाहिए. (Ie6651, b/187304502)

वर्शन 1.4.0-alpha01

18 मई, 2021

androidx.fragment:fragment:1.4.0-alpha01, androidx.fragment:fragment-ktx:1.4.0-alpha01, और androidx.fragment:fragment-testing:1.4.0-alpha01 रिलीज़ किए गए हैं. वर्शन 1.4.0-alpha01 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • FragmentContainerView अब getFragment() मेथड उपलब्ध कराता है. यह मेथड, कंटेनर में सबसे हाल ही में जोड़े गए फ़्रैगमेंट को दिखाता है. यह findFragmentById() के आईडी के साथ FragmentContainerView के लॉजिक का इस्तेमाल करता है. हालांकि, इससे कॉल को चेन करने की अनुमति मिलती है. (Ife17a, b/162527857)

    val navController = binding.container.getFragment<NavHostFragment>().navController
    
  • जोड़ा गया FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE} यह तय करने के लिए कि फ़्रैगमेंट ट्रांज़िशन में, आपकी थीम से लिया गया स्टैंडर्ड ऐक्टिविटी-ट्रांज़िशन ऐनिमेशन चालू करना है या नहीं. (I46652)

एक से ज़्यादा बैक स्टैक

FragmentManager, फ़्रैगमेंट ट्रांज़ैक्शन का बैक स्टैक बनाए रखता है. इसमें addToBackStack() का इस्तेमाल किया जाता है. इससे आपको उन ट्रांज़ैक्शन को पॉप करने और पिछली स्थिति पर वापस जाने की सुविधा मिलती है. इसके लिए, फ़्रैगमेंट के साथ स्थिति सेव करने के तरीकों का इस्तेमाल किया जाता है, ताकि आपके फ़्रैगमेंट अपनी स्थिति को सही तरीके से वापस ला सकें.

इस रिलीज़ में, इन तरीकों को बेहतर बनाया गया है. इसके लिए, दो नए FragmentManager एपीआई उपलब्ध कराए गए हैं: saveBackStack(String name) और restoreBackStack(String name). ये एपीआई, FragmentTransaction की स्थिति और उन लेन-देन में जोड़े गए हर फ़्रैगमेंट की स्थिति को सेव करने के लिए, addToBackStack() की तरह ही name का इस्तेमाल करते हैं. साथ ही, आपको बाद में उन लेन-देन और उनके फ़्रैगमेंट को उनकी स्थिति के साथ वापस लाने की अनुमति देते हैं. इससे, मौजूदा पिछली गतिविधियों को सेव करके और सेव की गई पिछली गतिविधियों को वापस लाकर, कई पिछली गतिविधियों के बीच आसानी से ‘स्वैप’ किया जा सकता है.

saveBackStack(), popBackStack() की तरह ही काम करता है. यह एसिंक्रोनस है. इससे उस नाम के सभी फ़्रैगमेंट ट्रांज़ैक्शन वापस हो जाते हैं (‘पॉप’ हो जाते हैं). साथ ही, जोड़े गए सभी फ़्रैगमेंट मिट जाते हैं और हट जाते हैं. हालांकि, यह कुछ ज़रूरी मामलों में अलग होता है:

  • saveBackStack() हमेशा सभी को साथ लेकर चलता है.
  • popBackStack() के उलट, saveBackStack() कुछ नहीं करता. , बैक स्टैक में मौजूद सभी लेन-देन को पॉप अप कर देगा. ऐसा तब होगा, जब बैक स्टैक में दिया गया नाम नहीं मिलता है या शून्य नाम दिया जाता है. हालांकि, ऐसा तब तक नहीं करेगा, जब तक आपने addToBackStack() का इस्तेमाल करके, उसी नाम से कोई फ़्रैगमेंट लेन-देन पहले से नहीं किया हो.
  • उन लेन-देन से जोड़े गए सभी फ़्रैगमेंट की स्थिति सेव की जाती है. इसका मतलब है कि हर फ़्रैगमेंट की व्यू स्टेट सेव की जाती है, हर फ़्रैगमेंट के onSaveInstanceState() को कॉल किया जाता है और उस स्टेट को वापस लाया जाता है. साथ ही, उन फ़्रैगमेंट से जुड़े किसी भी ViewModel इंस्टेंस को बनाए रखा जाता है और उन पर onCleared() को नहीं कॉल किया जाता है.

saveBackStack() के साथ इस्तेमाल किए जा सकने वाले फ़्रैगमेंट लेन-देन को कुछ शर्तें पूरी करनी होंगी:

  • हर फ़्रैगमेंट ट्रांज़ैक्शन में setReorderingAllowed(true) का इस्तेमाल किया जाना चाहिए, ताकि ट्रांज़ैक्शन को एक ही एटॉमिक ऑपरेशन के तौर पर वापस लाया जा सके.
  • सेव किए गए लेन-देन का सेट, खुद में शामिल होना चाहिए. इसका मतलब है कि उन्हें लेन-देन के उस सेट से बाहर के किसी भी फ़्रैगमेंट का साफ़ तौर पर रेफ़रंस नहीं देना चाहिए. इससे यह पक्का किया जा सकेगा कि उन्हें बाद में कभी भी रीस्टोर किया जा सकता है. भले ही, इस दौरान पिछली गतिविधियों में कोई भी बदलाव किया गया हो.
  • सेव किए गए किसी भी फ़्रैगमेंट को बनाए रखा गया फ़्रैगमेंट नहीं होना चाहिए. साथ ही, उसके ट्रांज़िटिव सेट में बनाए रखा गया कोई चाइल्ड फ़्रैगमेंट नहीं होना चाहिए. इससे यह पक्का किया जा सकेगा कि पिछली गतिविधियां सेव होने के बाद, FragmentManager सेव किए गए फ़्रैगमेंट के कोई भी रेफ़रंस न दिखाए.

saveBackStack() की तरह, अगर आपने पहले saveBackStack() को उसी नाम से कॉल नहीं किया है, तो restoreBackStack() कुछ नहीं करता. (b/80029773)

Fragment StrictMode

FragmentStrictMode एपीआई, रनटाइम जांच की सुविधा देते हैं. इससे यह पुष्टि की जा सकती है कि आपका ऐप्लिकेशन या जिन लाइब्रेरी पर आपका ऐप्लिकेशन निर्भर करता है वे फ़्रैगमेंट के बंद किए जा चुके एपीआई को कॉल नहीं कर रही हैं. उल्लंघन का पता चलने पर, लॉग मैसेज प्रिंट किया जा सकता है, कस्टम लिसनर को ट्रिगर किया जा सकता है या ऐप्लिकेशन को क्रैश किया जा सकता है. FragmentStrictMode.Policy यह कंट्रोल करता है कि कौनसी जांचें चालू हैं और कौनसे “जुर्माने” ट्रिगर किए गए हैं. इसे setStrictModePolicy() तरीके का इस्तेमाल करके, FragmentManager पर सेट किया जा सकता है. यह नीति उस FragmentManager पर लागू होती है. साथ ही, यह उन सभी चाइल्ड फ़्रैगमेंट मैनेजर पर भी लागू होती है जो अपनी यूनीक नीति सेट नहीं करते हैं. (#123, #131, #150, b/143774122)

  • detectFragmentReuse() यह पता लगाता है कि पहले हटाए गए Fragment इंस्टेंस को FragmentManager में फिर से जोड़ा जा रहा है या नहीं. Fragment इंस्टेंस को डिस्ट्रॉय करने और FragmentManager से हटाने के बाद, आपको उससे इंटरैक्ट नहीं करना चाहिए या उसका रेफ़रंस नहीं रखना चाहिए. (#142, b/153738653)
  • detectFragmentTagUsage() यह पता लगाता है कि लेआउट एक्सएमएल में <fragment> टैग का इस्तेमाल कब किया जा रहा है. लेआउट में फ़्रैगमेंट को बड़ा करते समय, आपको हमेशा FragmentContainerView का इस्तेमाल करना चाहिए. (#141, b/153738235)
  • detectWrongFragmentContainer() यह पता लगाता है कि आपने किसी ऐसे कंटेनर में फ़्रैगमेंट जोड़ा है जो FragmentContainerView नहीं है. आपको अपने लेआउट में फ़्रैगमेंट के लिए, हमेशा FragmentContainerView का इस्तेमाल करना चाहिए. (#146, b/181137036)
  • detectRetainInstanceUsage() यह पता लगाता है कि आपने बंद किए जा चुके setRetainInstance() या getRetainInstance() एपीआई का इस्तेमाल किया है. (#140, b/153737954)
  • detectSetUserVisibleHint() यह सुविधा, आपको यह पता लगाने में मदद करती है कि आपने बंद किए जा चुके setUserVisibleHint() एपीआई का इस्तेमाल किया है या नहीं. (#136, b/153738974)
  • detectTargetFragmentUsage(), setTargetFragment() या getTargetFragment() एपीआई का इस्तेमाल करने पर, getTargetRequestCode() को इसका पता चलता है. (#139, b/153737745)

एपीआई में हुए बदलाव

  • FragmentManager.enableNewStateManager(boolean) के एक्सपेरिमेंटल एपीआई को हटा दिया गया है. अब सिर्फ़ नया स्टेट मैनेजर उपलब्ध है. (I90036, b/162776418)
  • FragmentScenario अब Closeable को लागू करता है. इससे, Kotlin के use तरीके या try-with-resources के साथ इसका इस्तेमाल किया जा सकता है. (#121, b/143774122)

लिंट की नई जांचें

  • DialogFragment में LayoutInflater.from(Context) का इस्तेमाल करने पर, UseGetLayoutInflater लिंट चेक अब चेतावनी देता है. आपको LayoutInflater के लिए सही पाने के लिए, हमेशा डायलॉग फ़्रैगमेंट के getLayoutInflater() तरीके का इस्तेमाल करना चाहिए. (#156, b/170781346)
  • DialogFragmentCallbacksDetector लिंट चेक अब DialogFragment के onCreateDialog() तरीके में setOnCancelListener या setOnDismissListener को कॉल करने पर चेतावनी देता है. इन लिसनर का मालिकाना हक DialogFragment के पास होता है. इसलिए, इन कॉलबैक को पाने के लिए आपको onCancel() और onDismiss() को बदलना होगा. (#171, b/181780047, b/187524311)

गड़बड़ियां ठीक की गईं

  • Fragment 1.3.4: ViewModelProvider या Fragment में viewModel() की Jetpack Compose विधि के साथ ViewTreeViewModelStoreOwner.get() API का इस्तेमाल करते समय, Fragment 1.3.3 में हुई रिग्रेशन की समस्या को ठीक किया गया. इन इस्तेमाल के उदाहरणों में अब आपके फ़्रैगमेंट से मिले ViewModelProvider.Factory का सही तरीके से इस्तेमाल किया जाता है. ऐसा तब होता है, जब यह getDefaultViewModelProviderFactory() को बदल देता है. जैसे, @AndroidEntryPoint एनोटेट किए गए फ़्रैगमेंट, Hilt का इस्तेमाल करते समय ऐसा करते हैं. अगर आपने उस तरीके को नहीं बदला है, तो SavedStateViewModelFactory बनाया जाता है. यह फ़्रैगमेंट के व्यू के साथ-साथ अपनी स्थिति को सेव और रीस्टोर करता है. इसे डिफ़ॉल्ट फ़ैक्ट्री के तौर पर बनाया जाता है. (I5cbfa, b/186097368)
  • Fragment 1.3.4 से: API 29 पर FragmentContainerView का इस्तेमाल करने पर, इंसर्ट अब अनिश्चित काल तक डिसपैच नहीं होंगे. इससे BottomNavigationBar और FloatingActionButton इंस्टेंस से जुड़ी समस्याएं ठीक हो जाएंगी. (I1bb78, b/186012452)
  • Fragment 1.3.4 से: अब प्रोसेस बंद होने के बाद, फ़्रैगमेंट के नतीजे वाले बंडल से Parcelable को वापस पाया जा सकता है. (I65932, b/187443158)
  • Fragment 1.3.4 से: ViewGroup पर शेयर किए गए एलिमेंट का ट्रांज़िशन करते समय, अगर ViewGroup के लिए transitionGroup को false पर सेट किया गया है, तो अब यह सही तरीके से ट्रांज़िशन करेगा. (I99675)

बाहरी योगदान

वर्शन 1.3

वर्शन 1.3.6

21 जुलाई, 2021

androidx.fragment:fragment:1.3.6, androidx.fragment:fragment-ktx:1.3.6, और androidx.fragment:fragment-testing:1.3.6 रिलीज़ किए गए हैं. वर्शन 1.3.6 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • फ़्रैगमेंट 1.4.0-alpha03 से: किसी फ़्रैगमेंट को हटाने के दौरान उसे छिपाने की कोशिश करने पर, FragmentManager अब क्रैश नहीं होगा. (I573dd, b/183634730)
  • रूट व्यू में transitionGroup=”true” सेट होने पर, hide() का इस्तेमाल करते समय, फ़्रैगमेंट का व्यू अब GONE पर सेट हो गया है. (aosp/1766655, b/193603427)
  • FragmentActivity अब हमेशा सेव की गई स्थिति को अनलॉक करता है. ऐसा इसलिए, क्योंकि यह लाइफ़साइकल के उन कॉलबैक में पहला ऑपरेशन होता है जिन्हें यह बदलता है. (I6db7a)

डिपेंडेंसी अपडेट करना

वर्शन 1.3.5

16 जून, 2021

androidx.fragment:fragment:1.3.5, androidx.fragment:fragment-ktx:1.3.5, और androidx.fragment:fragment-testing:1.3.5 रिलीज़ किए गए हैं. वर्शन 1.3.5 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • aosp/1679887 की वजह से, Fragment 1.3.4 में शेयर किए गए एलिमेंट के ट्रांज़िशन में हुई रिग्रेशन की समस्या को ठीक किया गया है. अब फ़्रैगमेंट, ट्रांज़िशन ग्रुप को सही तरीके से हैंडल करते हैं. इन्हें सीधे तौर पर transitionGroup="true" के ज़रिए या परोक्ष रूप से transitionName या background के ज़रिए सेट किया जाता है. साथ ही, शेयर किए गए एलिमेंट अब IndexOutOfBoundsException नहीं दिखाएंगे. (I16484, b/188679569, b/188969304)

वर्शन 1.3.4

18 मई, 2021

androidx.fragment:fragment:1.3.4, androidx.fragment:fragment-ktx:1.3.4, और androidx.fragment:fragment-testing:1.3.4 रिलीज़ किए गए हैं. वर्शन 1.3.4 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • Hilt का इस्तेमाल करते समय, ViewModelProvider या Fragment में viewModel() की Jetpack Compose विधि के साथ ViewTreeViewModelStoreOwner.get() एपीआई का इस्तेमाल करने पर, Fragment 1.3.3 में हुई रिग्रेशन की समस्या को ठीक किया गया है. इन इस्तेमाल के उदाहरणों में अब आपके फ़्रैगमेंट से मिले ViewModelProvider.Factory का सही तरीके से इस्तेमाल किया जाता है. ऐसा तब होता है, जब यह getDefaultViewModelProviderFactory() को बदल देता है. जैसे, @AndroidEntryPoint के तौर पर एनोटेट किए गए फ़्रैगमेंट करते हैं. अगर आपने उस तरीके को नहीं बदला है, तो SavedStateViewModelFactory बनाया जाता है. यह फ़्रैगमेंट के व्यू के साथ-साथ अपनी स्थिति को सेव और रीस्टोर करता है. इसे डिफ़ॉल्ट फ़ैक्ट्री के तौर पर बनाया जाता है. (I5cbfa, b/186097368)
  • एपीआई 29 पर FragmentContainerView का इस्तेमाल करने पर, इंसर्ट अब हमेशा के लिए डिसपैच नहीं होंगे. इससे BottomNavigationBar और FloatingActionButton इंस्टेंस से जुड़ी समस्याएं ठीक हो जाएंगी. (I1bb78, b/186012452)
  • अब प्रोसेस बंद होने के बाद, फ़्रैगमेंट के नतीजे वाले बंडल से अपने पार्सलेबल को वापस पाया जा सकता है. (I65932, b/187443158)
  • ViewGroup पर शेयर किए गए एलिमेंट का ट्रांज़िशन करते समय, अगर ViewGroup के लिए transitionGroup को false पर सेट किया गया है, तो अब यह सही तरीके से ट्रांज़िशन करेगा. (I99675)

वर्शन 1.3.3

21 अप्रैल, 2021

androidx.fragment:fragment:1.3.3, androidx.fragment:fragment-ktx:1.3.3, और androidx.fragment:fragment-testing:1.3.3 रिलीज़ किए गए हैं. वर्शन 1.3.3 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • अब SavedStateViewModelFactory का इस्तेमाल, SavedStateRegistryOwner के साथ किया जा सकता है. फ़्रैगमेंट के व्यू के साथ ViewTreeSavedStateRegistryOwner.get() का इस्तेमाल करके वापस लाया जाता है. (I21acf, b/181577191)

गड़बड़ियां ठीक की गईं

  • Fragment 1.3.2 में हुई रिग्रेशन की समस्या को ठीक किया गया है. इस समस्या की वजह से, setPrimaryNavFragment ऑपरेशन शामिल करने वाले FragmentTransaction को पॉप अप करने पर, popEnter एनिमेशन नहीं चलते थे. जैसे, NavHostFragment की ओर से इस्तेमाल किए जाने वाले एनिमेशन. (I38c87, b/183877426)
  • FragmentContainerView अब यह पक्का करता है कि हर Fragment को WindowInsets का नया सेट भेजा जाए. इससे यह पक्का होता है कि हर फ़्रैगमेंट अब इनसेट का इस्तेमाल अलग-अलग कर सकता है. (I63f68, b/172153900)
  • DialogFragment अब उन मामलों को ठीक से हैंडल करता है जहां किसी कंटेनर में चाइल्ड फ़्रैगमेंट जोड़ा जाता है. इस कंटेनर का आईडी, आपकी कस्टम Dialog क्लास के कंटेनर के आईडी के जैसा होता है. इससे, BottomSheetDialog जैसे डायलॉग बॉक्स में इंटरनल तौर पर इस्तेमाल किए गए आईडी को फिर से इस्तेमाल करते समय, व्यू हैरारकी से जुड़ी समस्याएं ठीक हो जाती हैं. (Ie6279, b/180021387)
  • FragmentManager.dump() अब ऐक्टिव फ़्रैगमेंट की सूची में पहले फ़्रैगमेंट को सही तरीके से इंडेंट करता है. (If5c33, b/183705451)

स्टेट मैनेजर की नई सुविधा से जुड़ी गड़बड़ियां ठीक की गईं

  • नया फ़्रैगमेंट स्टेट मैनेजर, अब छिपाने की कार्रवाइयों के साथ-साथ एग्ज़िट ट्रांज़िशन को सही तरीके से मैनेज करता है. (I9e4de, b/184830265)

वर्शन 1.3.2

24 मार्च, 2021

androidx.fragment:fragment:1.3.2, androidx.fragment:fragment-ktx:1.3.2, और androidx.fragment:fragment-testing:1.3.2 रिलीज़ किए गए हैं. वर्शन 1.3.2 में ये बदलाव शामिल हैं.

स्टेट मैनेजर की नई सुविधा से जुड़ी गड़बड़ियां ठीक की गईं

  • popBackStack() और commit(), दोनों को एक साथ चलाने पर, अब आखिरी ऑपरेशन सभी ऐनिमेशन के लिए दिशा सेट करेगा. ऐसा इसलिए, ताकि कुछ पॉप ऐनिमेशन और कुछ एंटर ऐनिमेशन चलाने के बजाय, सभी ऐनिमेशन के लिए दिशा सेट की जा सके. (I7072e, b/181142246)
  • शेयर किए गए एलिमेंट के ट्रांज़िशन के दौरान, शेयर किए गए एलिमेंट के हैरारकी में मौजूद व्यू के ट्रांज़िशन का नाम अब नहीं मिटेगा. (I4d4a6, b/179934757)

डिपेंडेंसी से जुड़े अपडेट

  • अब फ़्रैगमेंट, ऐक्टिविटी 1.2.2 पर निर्भर करता है. इससे, फ़्रैगमेंट 1.3.1 या इसके बाद के वर्शन का इस्तेमाल करते समय, ऐक्टिविटी के InvalidFragmentVersionForActivityResult लिंट चेक से जुड़ी समस्या ठीक हो जाती है.
  • Fragment अब Lifecycle 2.3.1 पर निर्भर करता है.

वर्शन 1.3.1

10 मार्च, 2021

androidx.fragment:fragment:1.3.1, androidx.fragment:fragment-ktx:1.3.1, और androidx.fragment:fragment-testing:1.3.1 रिलीज़ किए गए हैं. वर्शन 1.3.1 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • अब DialogFragment में मौजूद डायलॉग, अपने DecorView के ज़रिए ViewTree के मालिकों को ऐक्सेस कर सकते हैं. इससे यह पक्का किया जा सकेगा कि DialogFragment का इस्तेमाल ComposeView के साथ किया जा सकता है. (Ib9290, b/180691023)

गड़बड़ियां ठीक की गईं

  • FragmentContainerView का इस्तेमाल करके, पहले से RESUMED गतिविधि में शामिल किए गए फ़्रैगमेंट अब कॉन्फ़िगरेशन में बदलाव होने के बाद सही तरीके से दिखते हैं. (Ie14c8, b/180538371)
  • फ़्रैगमेंट के आखिर में अब कोई अतिरिक्त } नहीं है toString() (I54705, b/177761088)
  • FragmentActivity में ओवरराइड किए गए तरीके, अब बेस मेथड javaDoc (I736ce, b/139548782) को सही तरीके से इनहेरिट करते हैं
  • setFragmentResult और setFragmentResultListener के दस्तावेज़ों में, पैरामीटर के दस्तावेज़ों को अपडेट किया गया है. इससे पता चलता है कि अब ये नल वैल्यू स्वीकार नहीं करते हैं (I990ba, b/178348386)

स्टेट मैनेजर की नई सुविधा से जुड़ी गड़बड़ियां ठीक की गईं

  • mFocusedView की वजह से फ़्रैगमेंट में मेमोरी लीक होने की समस्या ठीक की गई (Ib4e9e, b/179925887)
  • फ़्रैगमेंट अब लेन-देन दिखाने/छिपाने की सुविधा का इस्तेमाल करते समय, onCreateOptionsMenu को सही तरीके से कॉल करते हैं (I8bce8, b/180255554)
  • अब चाइल्ड फ़्रैगमेंट के ट्रांज़िशन, फ़्रैगमेंट के लेआउट से पहले ही शुरू हो जाएंगे. इससे RESUMED (Ic11e6, b/180825150) पर सही तरीके से पहुंच सकेंगे
  • <fragment> टैग का इस्तेमाल करके बढ़ाए गए फ़्रैगमेंट अब हमेशा RESUMED (I452ac, (I9fa49) तक पहुंचेंगे

डिपेंडेंसी से जुड़े अपडेट

वर्शन 1.3.0

10 फ़रवरी, 2021

androidx.fragment:fragment:1.3.0, androidx.fragment:fragment-ktx:1.3.0, और androidx.fragment:fragment-testing:1.3.0 रिलीज़ किए गए हैं. वर्शन 1.3.0 में ये बदलाव शामिल हैं.

1.2.0 के बाद हुए मुख्य बदलाव

  • नया स्टेट मैनेजर: FragmentManager के इंटरनल कोड को फिर से लिखने से, लाइफ़साइकल इवेंट, ऐनिमेशन, और ट्रांज़िशन को डिसपैच करने से जुड़ी कई समस्याएं ठीक हो गई हैं. साथ ही, यह भी ठीक हो गया है कि पोस्टपोन किए गए फ़्रैगमेंट को कैसे हैंडल किया जाता है.
  • Activity Result API इंटिग्रेशन: Activity 1.2.0 में पेश किए गए ActivityResultRegistry एपीआई के लिए सहायता जोड़ी गई है. इससे startActivityForResult()+onActivityResult() और requestPermissions()+onRequestPermissionsResult() फ़्लो को हैंडल किया जा सकता है. इसके लिए, आपको अपने फ़्रैगमेंट में मौजूद तरीकों को बदलने की ज़रूरत नहीं होगी. साथ ही, इन फ़्लो की जांच करने के लिए हुक भी उपलब्ध कराए जाएंगे. गतिविधि से नतीजा पाना के बारे में अपडेट किया गया लेख पढ़ें.

    • इस रिलीज़ में, अमान्य अनुरोध कोड और अनुमति के अनुरोधों को भेजने से जुड़ी कई समस्याओं को ठीक किया गया है. इनकी वजह से, Activity Result API, FragmentActivity के पुराने वर्शन पर काम नहीं करता था. FragmentActivity या AppCompatActivity में Activity Result API का इस्तेमाल करने के लिए, आपको Fragment 1.3.0 पर अपग्रेड करना होगा.
  • Fragment Result API: FragmentManager पर नए एपीआई के ज़रिए, दो फ़्रैगमेंट के बीच नतीजे पास करने की सुविधा जोड़ी गई. यह पैरंट/चाइल्ड फ़्रैगमेंट, DialogFragment, और नेविगेशन में मौजूद फ़्रैगमेंट के लिए काम करता है. इससे यह पक्का होता है कि नतीजे सिर्फ़ आपके फ़्रैगमेंट को भेजे जाएं, जबकि वह कम से कम STARTED पर हो. इन नए एपीआई के पक्ष में, टारगेट फ़्रैगमेंट एपीआई का इस्तेमाल बंद कर दिया गया है. Fragment Result API का इस्तेमाल करके नतीजे पाना लेख पढ़ें.

  • FragmentOnAttachListener: FragmentActivity और Fragment पर onAttachFragment() कॉलबैक अब काम नहीं करता है. ज़्यादा बेहतर विकल्प देने के लिए, एक नया FragmentOnAttachListener जोड़ा गया है. इससे onAttachFragment() को अलग-अलग, टेस्ट किए जा सकने वाले लिसनर को सौंपा जा सकता है. साथ ही, अपने डायरेक्ट चाइल्ड FragmentManager के अलावा, अन्य FragmentManager में लिसनर जोड़ने की सुविधा भी मिलती है.

  • FragmentScenario में सुधार: fragment-testing आर्टफ़ैक्ट की FragmentScenario क्लास को Kotlin में फिर से लिखा गया है. साथ ही, इसमें कई सुधार किए गए हैं:

    • FragmentScenario अब moveToState() को लागू करने के लिए, setMaxLifecycle() का इस्तेमाल करता है. इससे यह पक्का होता है कि सभी एपीआई लेवल पर एक जैसा व्यवहार हो और फ़्रैगमेंट की स्थिति को बुनियादी ऐक्टिविटी से अलग किया जा सके.
    • FragmentScenario अब शुरुआती Lifecycle.State सेट करने की सुविधा देता है, ताकि पहली बार हर Lifecycle.State पर जाने से पहले फ़्रैगमेंट की स्थिति की पुष्टि की जा सके.
    • अब onFragment के FragmentScenario एपीआई का एक विकल्प उपलब्ध है. यह Kotlin के रीफ़ाइड एक्सटेंशन मेथड withFragment के तौर पर उपलब्ध है. इसकी मदद से, वैल्यू वापस पाई जा सकती है. खास तौर पर, यह दिए गए ब्लॉक में जनरेट हुए अपवादों को फिर से थ्रो करता है.
  • ViewTree सहायता: Fragment अब ViewTreeLifecycleOwner.get(View), ViewTreeViewModelStoreOwner.get(View), और ViewTreeSavedStateRegistryOwner एपीआई के साथ काम करता है. इन एपीआई को लाइफ़साइकल 2.3.0 और सेव्डस्टेट 1.1.0 में जोड़ा गया है. इससे फ़्रैगमेंट को ViewModelStoreOwner के तौर पर दिखाएगा. साथ ही, फ़्रैगमेंट के व्यू लाइफ़साइकल से जुड़े SavedStateRegistryOwner और LifecycleOwner को दिखाएगा. ऐसा तब होगा, जब Fragment में View का इस्तेमाल किया जाएगा.

  • TRANSIT_ ऐनिमेशन में बदलाव: फ़्रैगमेंट के डिफ़ॉल्ट इफ़ेक्ट, TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE, और TRANSIT_FRAGMENT_FADE अब Animation के बजाय Animator का इस्तेमाल करते हैं. इन ऐनिमेशन को बनाने के लिए इस्तेमाल किए गए संसाधन अब निजी हैं.

  • setRetainInstance() के इस्तेमाल पर रोक: फ़्रैगमेंट पर setRetainInstance() तरीके के इस्तेमाल पर रोक लगा दी गई है. ViewModels के लॉन्च होने के बाद, डेवलपर के पास ऐसी स्थिति को बनाए रखने के लिए एक खास एपीआई है जिसे गतिविधियों, फ़्रैगमेंट, और नेविगेशन ग्राफ़ से जोड़ा जा सकता है. इससे डेवलपर, सामान्य फ़्रैगमेंट का इस्तेमाल कर सकते हैं. साथ ही, वे अपनी पसंद की स्थिति को अलग रख सकते हैं. इससे, डेटा लीक होने की सामान्य वजह से बचा जा सकता है. साथ ही, वे बनाए गए और मिटाए गए फ़्रैगमेंट की काम की प्रॉपर्टी को बनाए रख सकते हैं. जैसे, ViewModel का कंस्ट्रक्टर और इसे मिलने वाला onCleared() कॉलबैक.

  • ViewPager 1 अडैप्टर अब सेवा में नहीं है: ViewPager2 1.0.0 के रिलीज़ होने के बाद, ViewPager के साथ इंटरैक्ट करने के लिए FragmentPagerAdapter और FragmentStatePagerAdapter क्लास अब सेवा में नहीं हैं. ViewPager से ViewPager2 पर माइग्रेट करना लेख पढ़ें.

वर्शन 1.3.0-rc02

27 जनवरी, 2021

androidx.fragment:fragment:1.3.0-rc02, androidx.fragment:fragment-ktx:1.3.0-rc02, और androidx.fragment:fragment-testing:1.3.0-rc02 रिलीज़ किए गए हैं. वर्शन 1.3.0-rc02 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • उस समस्या को ठीक किया गया है जिसमें कॉन्फ़िगरेशन में बदलाव करने के बाद, माता-पिता DialogFragment का आइकॉन, बच्चे DialogFragment के आइकॉन के ऊपर दिखता था. अब बच्चे का डायलॉग फ़्रैगमेंट हमेशा माता-पिता के डायलॉग फ़्रैगमेंट के ऊपर दिखेगा. (I30806, b/177439520)
  • उस समस्या को ठीक कर दिया गया है जिसमें Animation के साथ hide ऑपरेशन करने पर, ऐनिमेशन के आखिर में छिपा हुआ फ़्रैगमेंट फ़्लैश होता था. (I57e22, b/175417675)
  • व्यू हाइरार्की अटैच होने से पहले जोड़े गए ट्रांज़िशन वाले फ़्रैगमेंट, अब RESUMED तक सही तरीके से पहुंचते हैं. (I1fc1d, b/177154873)

स्टेट मैनेजर की नई सुविधा से जुड़ी गड़बड़ियां ठीक की गईं

  • फ़्रैगमेंट का व्यू Lifecycle अब उन मामलों को सही तरीके से हैंडल करता है जहां फ़्रैगमेंट का व्यू, Lifecycle के CREATED तक पहुंचने से पहले ही बंद हो जाता है. इससे “INITIALIZED से कोई इवेंट डाउन नहीं हुआ” जैसे अपवादों से बचा जा सकता है. (eda2bd, b/176138645)
  • Animator का इस्तेमाल करने वाले फ़्रैगमेंट अब FragmentContainerView का इस्तेमाल करते समय सही क्रम में दिखते हैं. (Id9aa3, b/176089197)

वर्शन 1.3.0-rc01

16 दिसंबर, 2020

androidx.fragment:fragment:1.3.0-rc01, androidx.fragment:fragment-ktx:1.3.0-rc01, और androidx.fragment:fragment-testing:1.3.0-rc01 रिलीज़ किए गए हैं. वर्शन 1.3.0-rc01 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • onPrepareOptionsMenu() अब onCreateOptionsMenu() के जैसा ही काम करता है. साथ ही, जब कोई पैरंट फ़्रैगमेंट setMenuVisibility(false) को कॉल करता है, तब इसे कॉल नहीं किया जाता. (Id7de8, b/173203654)

स्टेट मैनेजर की नई सुविधा से जुड़ी गड़बड़ियां ठीक की गईं

  • FragmentContainerView में Animation वाला फ़्रैगमेंट जोड़ने पर, लीक और विज़ुअल आर्टफ़ैक्ट की समस्या ठीक की गई. इसके बाद, पॉप ऑपरेशन से उस फ़्रैगमेंट को जोड़ने की प्रोसेस को रोका गया. (I952d8)
  • उस समस्या को ठीक किया गया है जिसमें फ़्रैगमेंट का व्यू, व्यू हैरारकी में बना रहता था. ऐसा तब होता था, जब उसे onCreate() या onViewCreated() तरीकों के दौरान बदला जाता था. (I8a7d5)
  • अब फ़्रैगमेंट के रूट व्यू को फिर से शुरू करने पर, फ़ोकस को सही तरीके से वापस लाया जाता है. (Ifc84b)
  • एक ही फ़्रैगमेंट ट्रांज़ैक्शन में पॉप और बदलने की कार्रवाइयों को एक साथ करने पर, अब सही ऐनिमेशन (Ifd4e4, b/170328691) दिखेंगे

वर्शन 1.3.0-beta02

2 दिसंबर, 2020

androidx.fragment:fragment:1.3.0-beta02, androidx.fragment:fragment-ktx:1.3.0-beta02, और androidx.fragment:fragment-testing:1.3.0-beta02 रिलीज़ किए गए हैं. वर्शन 1.3.0-beta02 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • FragmentScenario को पूरी तरह से Kotlin में बदल दिया गया है. साथ ही, FragmentAction के लिए Kotlin 1.4 के फ़ंक्शनल इंटरफ़ेस का इस्तेमाल करके, सोर्स और बाइनरी के साथ काम करने की सुविधा को बनाए रखा गया है. (I19d31)

व्यवहार में बदलाव

  • class या android:name एट्रिब्यूट का इस्तेमाल करके फ़्रैगमेंट को बड़ा न करने वाले FragmentContainerViews को अब FragmentActivity के बाहर इस्तेमाल किया जा सकता है. (Id4397, b/172266337)
  • अब किसी फ़्रैगमेंट के लाइफ़साइकल को DESTROYED पर सेट करने की कोशिश करने पर, IllegalArgumentException (Ie7651, b/170765622) दिखेगा
  • DESTROYED स्थिति के साथ FragmentScenario को शुरू करने पर, अब IllegalArgumentException (I73590, b/170765622) दिखेगा

स्टेट मैनेजर की नई सुविधा से जुड़ी गड़बड़ियां ठीक की गईं

  • उस समस्या को ठीक किया गया है जिसमें Animator या TRANSIT_FRAGMENT_ विकल्पों में से किसी एक का इस्तेमाल करने वाले फ़्रैगमेंट ट्रांज़िशन को रोकने पर, व्यू अपनी फ़ाइनल स्थिति तक नहीं पहुंच पाता था. (I92426, b/169874632)
  • ऐसी समस्या को ठीक किया गया है जिसकी वजह से, Animation से बाहर निकलने वाले फ़्रैगमेंट ठीक से डिस्ट्रॉय नहीं हो पाते थे. (I83d65)
  • जिन फ़्रैगमेंट के इफ़ेक्ट अब उलट गए हैं वे सही तरीके से रद्द हो जाते हैं और सही एंट्री इफ़ेक्ट के साथ फिर से शुरू हो जाते हैं. (I62226, b/167092035)
  • उस समस्या को ठीक किया गया है जिसकी वजह से hide() का एग्ज़िट Animator काम नहीं करता था. (Id7ffe)
  • अब फ़्रैगमेंट को पोस्टपोन करने और फिर तुरंत शुरू करने पर, वे ठीक से दिखते हैं. (Ie713b, b/170022857)
  • ऐनिमेशन के दौरान फ़ोकस किए गए व्यू को हटाने वाले फ़्रैगमेंट, RESUMED (I38c65, b/172925703) पर पहुंचने के बाद, अलग किए गए व्यू पर फ़ोकस को वापस लाने की कोशिश नहीं करेंगे

बाहरी योगदान

  • FragmentFactory अब अलग-अलग ClassLoader इंस्टेंस के लिए, फ़्रैगमेंट क्लास को अलग से कैश मेमोरी में सेव करता है. धन्यवाद, साइमन शिलर! (#87, b/113886460)

वर्शन 1.3.0-beta01

1 अक्टूबर, 2020

androidx.fragment:fragment:1.3.0-beta01, androidx.fragment:fragment-ktx:1.3.0-beta01, और androidx.fragment:fragment-testing:1.3.0-beta01 रिलीज़ किए गए हैं. वर्शन 1.3.0-beta01 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • setMaxLifecycle() अब Lifecycle की स्थिति को INITIALIZING पर सेट करने की सुविधा देता है. हालांकि, ऐसा तब तक किया जा सकता है, जब तक फ़्रैगमेंट को CREATED में नहीं ले जाया जाता. (b/159662173)

एपीआई में हुए बदलाव

  • Kotlin 1.4 का इस्तेमाल करने के लिए, androidx को अपग्रेड करें (Id6471, b/165307851, b/165300826)

व्यवहार में बदलाव

  • फ़्रैगमेंट रिसॉर्स फ़ाइलों को सही तरीके से निजी के तौर पर सेट किया गया हो. (aosp/1425237)

गड़बड़ियां ठीक की गईं

  • <fragment> टैग का इस्तेमाल करके बढ़ाए गए फ़्रैगमेंट, अब तब तक सही तरीके से इंतज़ार करेंगे, जब तक उनके व्यू को कंटेनर में नहीं जोड़ दिया जाता. इसके बाद, वे STARTED (I02f4c) पर चले जाएंगे
  • अब दिखने वाले फ़्रैगमेंट और फिर setMaxLifecycle() से CREATED तक, अब सही तरीके से एक्ज़िट इफ़ेक्ट लागू होते हैं. (b/165822335)
  • बैक स्टैक में नहीं जोड़े गए अलग किए गए फ़्रैगमेंट को हटाने से, अब मेमोरी लीक नहीं होती है. निकलास ऐंसमन गिएर्ट्ज़ का शुक्रिया! (b/166489383)
  • चालू फ़्रैगमेंट में अब हमेशा नॉन-नल FragmentManager होगा. साथ ही, नॉन-नल FragmentManager वाले फ़्रैगमेंट को हमेशा चालू माना जाएगा. (aosp/1422346)
  • फ़्रैगमेंट के डिफ़ॉल्ट इफ़ेक्ट, TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE, और TRANSIT_FRAGMENT_FADE अब Animation के बजाय Animator का इस्तेमाल करते हैं. (b/166155034)

स्टेट मैनेजर की नई सुविधा से जुड़ी गड़बड़ियां ठीक की गईं

  • फ़्रैगमेंट अब ऐनिमेशन शुरू होने से ठीक पहले, व्यू फ़ोकस की स्थिति को सही तरीके से रीस्टोर करते हैं. (Icc256)
  • जिन फ़्रैगमेंट में सिर्फ़ शेयर किए गए एलिमेंट का ट्रांज़िशन होता है वे अब अपने खास इफ़ेक्ट को सही तरीके से पूरा करते हैं. इसका मतलब है कि वे अपनी फ़ाइनल स्थिति में पहुंच जाते हैं (Iaebc7, b/166658128)
  • फ़्रैगमेंट व्यू को अब हमेशा कंटेनर से हटा दिया जाता है. इसके बाद, उन्हें डिस्ट्रॉय किया जाता है. (Id5876)
  • नया स्टेट मैनेजर, अब फ़्रैगमेंट व्यू को जोड़ने से पहले, उसे लगातार हटाता है. (I41a6e)
  • फ़्रैगमेंट व्यू की दिखने की स्थिति में किए गए बदलावों को अब नया स्टेट मैनेजर लागू करता है. इसका मतलब है कि अगर आपने ऐनिमेशन शुरू होने से पहले, किसी फ़्रैगमेंट के व्यू को INVISIBLE पर सेट किया है, तो वह वाकई में नहीं दिखेगा. (b/164481490)
  • अब फ़्रैगमेंट, Animations के बजाय Animators को प्राथमिकता देते हैं. इसका मतलब है कि दोनों के साथ मौजूद फ़्रैगमेंट सिर्फ़ Animator को चलाएगा और Animation को अनदेखा करेगा. (b/167579557)
  • नए स्टेट मैनेजर की वजह से, अब ऐनिमेशन डालते समय फ़्रैगमेंट फ़्लैश नहीं होते. (b/163084315)

आम समस्या

नए स्टेट मैनेजर का इस्तेमाल करते समय, अगर खास इफ़ेक्ट डालते समय पिछली स्क्रीन पर वापस जाने के बजाय बैक बटन दबाया जाता है, तो पुराना फ़्रैगमेंट कभी भी फिर से नहीं जोड़ा जाता. इससे स्क्रीन खाली हो जाती है. (b/167259187, b/167092035, b/168442830)

वर्शन 1.3.0-alpha08

19 अगस्त, 2020

androidx.fragment:fragment:1.3.0-alpha08, androidx.fragment:fragment-ktx:1.3.0-alpha08, और androidx.fragment:fragment-testing:1.3.0-alpha08 रिलीज़ किए गए हैं. वर्शन 1.3.0-alpha08 में ये बदलाव शामिल हैं.

New State Manager

इस रिलीज़ में, FragmentManager के इंटरनल स्टेट मैनेजमेंट को फिर से फ़ैक्टर किया गया है. इससे लाइफ़साइकल के तरीकों, ऐनिमेशन, और ट्रांज़िशन के डिस्पैच पर असर पड़ता है. साथ ही, इससे यह भी पता चलता है कि स्थगित किए गए लेन-देन को कैसे मैनेज किया जाता है. यह सुविधा डिफ़ॉल्ट रूप से चालू रहती है. ज़्यादा जानकारी के लिए, फ़्रैगमेंट: इंटरनल को फिर से बनाने के बारे में ब्लॉग पोस्ट देखें. (b/139536619, b/147749580)

  • FragmentManager.enableNewStateManager(boolean) में मौजूद एक्सपेरिमेंटल एपीआई का इस्तेमाल करके, यह कंट्रोल किया जा सकता है कि FragmentManager, नए स्टेट मैनेजर का इस्तेमाल करे या नहीं. (I7b6ee)

नीचे दी गई समस्याएं, सिर्फ़ नए स्टेट मैनेजर का इस्तेमाल करने पर ठीक होती हैं:

  • replace ऑपरेशन का पिछला फ़्रैगमेंट अब नए फ़्रैगमेंट के शुरू होने से पहले सही तरीके से बंद हो जाता है. (b/161654580)
  • अब फ़्रैगमेंट, एक ही फ़्रैगमेंट पर एक साथ कई ऐनिमेशन चलाने से रोकते हैं. इससे उन मामलों से बचा जा सकता है जहां Animation, सभी Transition इफ़ेक्ट को बदल देता है या किसी फ़्रैगमेंट पर Animator और Transition, दोनों एक साथ चलते हैं. (b/149569323)
  • अब सभी फ़्रैगमेंट के लिए, एंट्री और एग्ज़िट के enterTransition और exitTranstion को चलाया जाता है. पहले, सिर्फ़ आखिरी फ़्रैगमेंट के लिए एंट्री और पहले फ़्रैगमेंट के लिए एग्ज़िट को चलाया जाता था. (b/149344150)
  • जिन फ़्रैगमेंट को कुछ समय के लिए रोक दिया गया है वे अब CREATED स्थिति में नहीं अटकते. इसके बजाय, वे अन्य फ़्रैगमेंट के साथ STARTED स्थिति में चले जाते हैं. (b/129035555)
  • उस समस्या को ठीक किया गया है जिसमें FragmentManager, लेन-देन को फिर से ऑर्डर करने की सुविधा के लिए तय की गई तारीख के बाद किए गए लेन-देन और फिर से ऑर्डर न किए गए लेन-देन को एक साथ प्रोसेस करते समय, कार्रवाइयों को गलत क्रम में लागू करता था. (b/147297731)
  • एक साथ कई फ़्रैगमेंट हटाने पर, अब फ़्रैगमेंट को कुछ समय के लिए पोस्टपोन करने पर, इंटरमीडिएट फ़्रैगमेंट कुछ समय के लिए नहीं दिखेंगे. (b/37140383)
  • FragmentManager अब onAttachFragment() कॉलबैक के अंदर से findFragmentById() या findFragmentByTag() को कॉल करने पर सही फ़्रैगमेंट दिखाता है. (b/153082833)
  • जब फ़्रैगमेंट को बदलने वाले फ़्रैगमेंट को कुछ समय के लिए रोक दिया जाता है, तो फ़्रैगमेंट अब onCreateView() को कॉल नहीं करते हैं. (b/143915710)
  • फ़्रेमवर्क Transition और AndroidX Transition इंस्टेंस को एक साथ इस्तेमाल करने की कोशिश करने पर दिखने वाले गड़बड़ी के मैसेज में अब उस फ़्रैगमेंट का नाम दिखता है जिसमें अमान्य ट्रांज़िशन है. (b/155574969)

व्यवहार में बदलाव

  • अब किसी फ़्रैगमेंट के onCreate() लाइफ़साइकल के तरीके में, ActivityResultLauncher पर launch() को कॉल किया जा सकता है. (b/161464278)
  • अब onCreate() के बाद registerForActivityResult() को कॉल करने पर, एक अपवाद दिखता है. इससे पता चलता है कि इसकी अनुमति नहीं है. कॉन्फ़िगरेशन में बदलाव के बाद, नतीजे नहीं मिलने पर यह अपवाद दिखता है. (b/162255449)
  • FragmentActivity अब Activity 1.2.0-alpha08 में पेश किए गए OnContextAvailableListener एपीआई का इस्तेमाल करके, FragmentManager की स्थिति को वापस लाता है. FragmentActivity की सबक्लास में जोड़े गए सभी लिसनर, इस लिसनर के बाद चलेंगे. (I513da)

गड़बड़ियां ठीक की गईं

  • startIntentSenderForResult() का इस्तेमाल करते समय, ActivityOptions के ज़रिए पास किए गए पैरामीटर अब काम करेंगे. (b/162247961)

आम समस्या

  • नए स्टेट मैनेजर का इस्तेमाल करते समय, onViewCreated() के बाद और onResume() से पहले फ़्रैगमेंट के रूट व्यू की दृश्यता को सीधे तौर पर सेट करने से, सेट की गई दृश्यता FragmentManager से बदल जाती है. , रूट व्यू की दृश्यता को कंट्रोल करता है. इसके बजाय, आपको अपने फ़्रैगमेंट के दिखने की सेटिंग बदलने के लिए, हमेशा hide() और show() कार्रवाइयों का इस्तेमाल करना चाहिए. (b/164481490)

वर्शन 1.3.0-alpha07

22 जुलाई, 2020

androidx.fragment:fragment:1.3.0-alpha07, androidx.fragment:fragment-ktx:1.3.0-alpha07, और androidx.fragment:fragment-testing:1.3.0-alpha07 रिलीज़ किए गए हैं. वर्शन 1.3.0-alpha07 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • FragmentScenario अब CREATED, STARTED या RESUMED की शुरुआती लाइफ़साइकल स्थिति सेट करने की सुविधा देता है. इससे फ़्रैगमेंट को हमेशा RESUMED स्थिति में ले जाने की ज़रूरत नहीं पड़ती. (b/159662750)
  • onFragment के FragmentScenario एपीआई के विकल्प के तौर पर, Kotlin के रीफ़ाइड एक्सटेंशन मेथड withFragment को जोड़ा गया है. इसकी मदद से, वैल्यू को वापस लाया जा सकता है. खास तौर पर, यह दिए गए ब्लॉक में जनरेट हुए अपवादों को फिर से थ्रो करता है. (b/158697631)

व्यवहार में बदलाव

  • FragmentScenario अब moveToState() को लागू करने के लिए, setMaxLifecycle() का इस्तेमाल करता है. इससे यह पक्का होता है कि सभी एपीआई लेवल पर एक जैसा व्यवहार हो और फ़्रैगमेंट की स्थिति को बुनियादी ऐक्टिविटी से अलग किया जा सके. (b/156527405)
  • ViewTreeSavedStateRegistryOwner से मिला SavedStateRegistryOwner अब फ़्रैगमेंट व्यू के लाइफ़साइकल से जुड़ा है. इससे यह पक्का होता है कि इसकी स्थिति सेव हो गई है और इसे फ़्रैगमेंट के व्यू के साथ ही वापस लाया जा सकता है. (b/158503763)

गड़बड़ियां ठीक की गईं

  • अब फ़्रैगमेंट, फ़्रैगमेंट के व्यू के अटैच होने का इंतज़ार करते हैं. इसके बाद, वे ViewCompat.requestApplyInsets() को कॉल करते हैं. इससे उन मामलों से बचा जा सकता है जहां इंसर्ट करने का अनुरोध खारिज कर दिया जाता था. (b/158095749)
  • कॉल करने clearFragmentResultListener पर, लाइफ़साइकल ऑब्ज़र्वर अब ठीक से हट जाता है. (b/159274993)

वर्शन 1.3.0-alpha06

10 जून, 2020

androidx.fragment:fragment:1.3.0-alpha06, androidx.fragment:fragment-ktx:1.3.0-alpha06, और androidx.fragment:fragment-testing:1.3.0-alpha06 रिलीज़ किए गए हैं. वर्शन 1.3.0-alpha06 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • FragmentActivity और Fragment पर onAttachFragment() कॉलबैक अब काम नहीं करता है. ज़्यादा बेहतर विकल्प देने के लिए, एक नया FragmentOnAttachListener जोड़ा गया है. इससे onAttachFragment() को अलग-अलग, टेस्ट किए जा सकने वाले लिसनर को सौंपा जा सकता है. साथ ही, अपने डायरेक्ट चाइल्ड FragmentManager के अलावा, FragmentManager में लिसनर जोड़ने की सुविधा भी मिलती है. (I06d3d)

गड़बड़ियां ठीक की गईं

  • अब पैरंट फ़्रैगमेंट के व्यू स्टेट को, चाइल्ड फ़्रैगमेंट से पहले रीस्टोर किया जाता है. इससे कॉन्फ़िगरेशन में बदलाव होने के बाद, विज़ुअल ऑर्डरिंग से जुड़ी समस्या ठीक हो जाती है. यह समस्या तब होती थी, जब DialogFragment, किसी दूसरे DialogFragment को चाइल्ड फ़्रैगमेंट के तौर पर दिखाता था. (b/157195715)
  • उस समस्या को ठीक किया गया है जिसमें UseRequireInsteadOfGet लिंट चेक, ?. और !! ऑपरेटर के चेन किए गए इस्तेमाल को सही तरीके से हैंडल नहीं करता था. (b/157677616)

वर्शन 1.3.0-alpha05

20 मई, 2020

androidx.fragment:fragment:1.3.0-alpha05, androidx.fragment:fragment-ktx:1.3.0-alpha05, और androidx.fragment:fragment-testing:1.3.0-alpha05 रिलीज़ किए गए हैं. वर्शन 1.3.0-alpha05 में ये बदलाव शामिल हैं.

नई सुविधाएं

एपीआई में हुए बदलाव

  • setFragmentResult() और setFragmentResultListener() API अब नॉन-शून्य Bundle और FragmentResultListener लेते हैं. पहले से सेट किए गए किसी नतीजे या लिसनर को साफ़ तौर पर हटाने के लिए, नए clearFragmentResult() और clearFragmentResultListener() तरीकों का इस्तेमाल करें. (b/155416778)
  • लैम्डा लेने वाले setFragmentResultListener() Kotlin एक्सटेंशन को अब inline के तौर पर मार्क किया गया है. (b/155323404)

व्यवहार में बदलाव

  • Fragment पर पहले से मौजूद startActivityForResult(), startIntentSenderForResult(), और requestPermissions अब अंदरूनी तौर पर ActivityResultRegistry का इस्तेमाल करते हैं. इसलिए, इन एपीआई का इस्तेमाल करते समय, अनुरोध कोड के लिए सिर्फ़ निचले बिट (0xFFFF से नीचे) का इस्तेमाल करने की पाबंदी हटा दी गई है. (b/155518741)

दस्तावेज़ से जुड़े अपडेट

  • Fragment(@LayoutRes int) और DialogFragment(@LayoutRes int) कंस्ट्रक्टर के बारे में ज़्यादा जानकारी दी गई है. इससे यह साफ़ तौर पर पता चलता है कि डिफ़ॉल्ट FragmentFactory का इस्तेमाल करते समय, उन्हें आपकी सबक्लास के नो आर्ग्युमेंट कंस्ट्रक्टर से कॉल किया जाना चाहिए. (b/153042497)

वर्शन 1.3.0-alpha04

29 अप्रैल, 2020

androidx.fragment:fragment:1.3.0-alpha04, androidx.fragment:fragment-ktx:1.3.0-alpha04, और androidx.fragment:fragment-testing:1.3.0-alpha04 रिलीज़ किए गए हैं. वर्शन 1.3.0-alpha04 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • FragmentManager पर नए एपीआई की मदद से, दो फ़्रैगमेंट के बीच नतीजे पास करने की सुविधा जोड़ी गई. यह पैरंट/चाइल्ड फ़्रैगमेंट, DialogFragment, और नेविगेशन में मौजूद फ़्रैगमेंट के लिए काम करता है. इससे यह पक्का होता है कि नतीजे सिर्फ़ आपके फ़्रैगमेंट को भेजे जाएं, जबकि वह कम से कम STARTED पर हो. (b/149787344)

एपीआई में हुए बदलाव

  • टारगेट फ़्रैगमेंट एपीआई अब काम नहीं करते. फ़्रैगमेंट के बीच डेटा पास करने के लिए, नए Fragment Result API का इस्तेमाल किया जाना चाहिए. (b/149787344)
  • फ़्रैगमेंट पर मौजूद startActivityForResult()/onActivityResult() और requestPermissions()/onRequestPermissionsResult() एपीआई अब काम नहीं करते. कृपया ऐक्टिविटी के नतीजे दिखाने वाले एपीआई का इस्तेमाल करें. (aosp/1290887)
  • ऐक्टिविटी 1.2.0-alpha04 में नुकसान पहुंचा सकने वाला बदलाव: prepareCall() तरीके का नाम बदलकर registerForActivityResult() कर दिया गया है. (aosp/1278717)

गड़बड़ियां ठीक की गईं

  • अब फ़्रैगमेंट का getViewLifecycleOwner(), onSaveInstanceState() को कॉल करने से पहले बंद हो जाता है. इससे फ़्रैगमेंट के लाइफ़साइकल का व्यवहार दिखता है. (b/154645875)
  • अब किसी फ़्रैगमेंट पर setMenuVisibility(false) को कॉल करने से, उसके चाइल्ड फ़्रैगमेंट के दिए गए मेन्यू की दिखने की सेटिंग सही तरीके से बदल जाती है. (b/153593580)
  • FragmentContainerView की मदद से, DialogFragment की व्यू हैरारकी में फ़्रैगमेंट जोड़ते समय, illegalStateException को ठीक किया गया. (b/154366601)
  • अब फ़्रैगमेंट को किसी गतिविधि से बाहर होस्ट करने पर, फ़्रैगमेंट पर मौजूद getDefaultViewModelProviderFactory() तरीके का इस्तेमाल करने पर ऐप्लिकेशन क्रैश नहीं होता. (b/153762914)

वर्शन 1.3.0-alpha03

1 अप्रैल, 2020

androidx.fragment:fragment:1.3.0-alpha03, androidx.fragment:fragment-ktx:1.3.0-alpha03, और androidx.fragment:fragment-testing:1.3.0-alpha03 रिलीज़ किए गए हैं. वर्शन 1.3.0-alpha03 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • Fragment पर पेमेंट के prepareCall तरीके अब final हैं. (b/152439361)

गड़बड़ियां ठीक की गईं

  • BottomSheetDialogFragment का इस्तेमाल करते समय, Fragment 1.3.0-alpha02 में हुई रिग्रेशन की समस्या को ठीक किया गया है. (b/151652127, aosp/1263328, aosp/1265163)
  • कॉन्फ़िगरेशन में बदलाव के बाद, फ़्रैगमेंट से prepareCall का इस्तेमाल करते समय होने वाली क्रैश की समस्या को ठीक किया गया है. (b/152137004)
  • setTargetFragment() का इस्तेमाल करते समय, शेयर किए गए एलिमेंट और एक्ज़िट ट्रांज़िशन को अनदेखा करने की समस्या को ठीक किया गया है. (b/152023196)
  • फ़्रैगमेंट 1.2.4: फ़्रैगमेंट के लिए ProGuard के नियमों को अपडेट किया गया है, ताकि रखे गए फ़्रैगमेंट को अस्पष्ट किया जा सके. (b/151605338)
  • Fragment 1.2.4 से: DialogFragment क्लास पर FragmentLiveDataObserve लिंट नियम बंद कर दिया गया है, क्योंकि इनका लाइफ़साइकल और व्यू लाइफ़साइकल हमेशा सिंक होता है. इसलिए, observe को कॉल करते समय this या viewLifecycleOwner में से किसी एक का इस्तेमाल करना सुरक्षित होता है. (b/151765086)

डिपेंडेंसी में बदलाव

  • फ़्रैगमेंट, गतिविधि 1.2.0-alpha03 पर निर्भर करते हैं. इसमें गतिविधि के नतीजे के एपीआई में काफ़ी सुधार किए गए हैं. यह एपीआई, गतिविधि 1.2.0-alpha02 में पेश किया गया था.

वर्शन 1.3.0-alpha02

18 मार्च, 2020

androidx.fragment:fragment:1.3.0-alpha02, androidx.fragment:fragment-ktx:1.3.0-alpha02, और androidx.fragment:fragment-testing:1.3.0-alpha02 रिलीज़ किए गए हैं. वर्शन 1.3.0-alpha02 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • ऐक्टिविटी 1.2.0-alpha02 में पेश किए गए ActivityResultRegistry एपीआई के लिए सहायता जोड़ी गई है. इससे startActivityForResult()+onActivityResult() और requestPermissions()+onRequestPermissionsResult() फ़्लो को हैंडल किया जा सकता है. साथ ही, इन फ़्लो को टेस्ट करने के लिए हुक उपलब्ध कराए जा सकते हैं. इसके अलावा, आपके फ़्रैगमेंट में तरीकों को बदला नहीं जाता है. अपडेट किया गया गतिविधि से नतीजा पाना लेख पढ़ें. (b/125158199)

एपीआई में हुए बदलाव

  • DialogFragment अब एक कंस्ट्रक्टर उपलब्ध कराता है. यह एक @LayoutRes लेता है, जो उस लेआउट के बारे में बताता है जिसे onCreateView() को डिफ़ॉल्ट रूप से इनफ़्लेट करना चाहिए. (b/150327080)
  • onActivityCreated() तरीके का अब इस्तेमाल नहीं किया जा सकता. फ़्रैगमेंट के व्यू से जुड़ा कोड, onViewCreated() में होना चाहिए. इसे onActivityCreated() से ठीक पहले कॉल किया जाता है. साथ ही, अन्य इनिशियलाइज़ेशन कोड, onCreate() में होना चाहिए. गतिविधि के onCreate() पूरा होने पर कॉलबैक पाने के लिए, गतिविधि के Lifecycle पर onAttach() में LifeCycleObserver रजिस्टर किया जाना चाहिए. साथ ही, onCreate() कॉलबैक मिलने के बाद इसे हटा दिया जाना चाहिए. (b/144309266)

गड़बड़ियां ठीक की गईं

  • Fragment 1.2.3: DialogFragment में मौजूद उस गड़बड़ी को ठीक किया गया है जिसकी वजह से onCreateDialog() से getLayoutInflater() को कॉल करने पर StackOverflowError होता था. (b/117894767, aosp/1258664)
  • Fragment 1.2.3: Fragment में शामिल ProGuard नियमों का दायरा कम किया गया है, ताकि यह पक्का किया जा सके कि इस्तेमाल न की गई Fragment क्लास को हटाया जा सके. (b/149665169)
  • फ़्रैगमेंट 1.2.3 से: UseRequireInsteadOfGet Lint चेक में फ़ॉल्स पॉज़िटिव की समस्या ठीक की गई. यह समस्या तब होती थी, जब Kotlin प्रॉपर्टी के नाम को शैडो करने वाले लोकल वैरिएबल के नाम का इस्तेमाल किया जाता था. (b/149891163)
  • फ़्रैगमेंट 1.2.3 से: लेआउट की झलक में गलत कंस्ट्रक्टर का इस्तेमाल करने पर, FragmentContainerView अब UnsupportedOperationException नहीं दिखाता है. (b/149707833)

मौजूदा समस्याएं

  • BottomSheetDialogFragment अब स्क्रीन पर डायलॉग को सही तरीके से नहीं दिखाता है. (b/151652127)

वर्शन 1.3.0-alpha01

4 मार्च, 2020

androidx.fragment:fragment:1.3.0-alpha01, androidx.fragment:fragment-ktx:1.3.0-alpha01, और androidx.fragment:fragment-testing:1.3.0-alpha01 रिलीज़ किए गए हैं. वर्शन 1.3.0-alpha01 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • लाइफ़साइकल 2.3.0-alpha01 में जोड़े गए ViewTreeLifecycleOwner.get(View) एपीआई के लिए सहायता जोड़ी गई है, ताकि यह onCreateView() से दिखाए गए किसी भी व्यू के लिए, फ़्रैगमेंट के viewLifecycleOwner को LifecycleOwner के तौर पर दिखा सके. (aosp/1182955)

एपीआई में हुए बदलाव

  • Fragments पर setRetainInstance() तरीके का इस्तेमाल अब नहीं किया जा सकता. ViewModels के आने के बाद, डेवलपर के पास स्थिति बनाए रखने के लिए एक खास एपीआई है. इसे गतिविधियों, फ़्रैगमेंट, और नेविगेशन ग्राफ़ से जोड़ा जा सकता है. इससे डेवलपर, सामान्य फ़्रैगमेंट का इस्तेमाल कर सकते हैं. साथ ही, वे अपनी पसंद की स्थिति को अलग रख सकते हैं. इससे, डेटा लीक होने की सामान्य वजह से बचा जा सकता है. साथ ही, वे बनाए गए और मिटाए गए फ़्रैगमेंट की काम की प्रॉपर्टी को बनाए रख सकते हैं. जैसे, ViewModel का कंस्ट्रक्टर और इसे मिलने वाला onCleared() कॉलबैक. (b/143911815)
  • ViewPager2 1.0.0 के रिलीज़ होने के बाद, ViewPager के साथ इंटरैक्ट करने के लिए FragmentPagerAdapter और FragmentStatePagerAdapter क्लास को बंद कर दिया गया है. ViewPager से ViewPager2 पर माइग्रेट करना लेख पढ़ें. (b/145132715)

गड़बड़ियां ठीक की गईं

  • Fragment ProGuard के नियम अब सिर्फ़ उन Fragment क्लास के डिफ़ॉल्ट कंस्ट्रक्टर को सही तरीके से सुरक्षित रखते हैं जिनका इस्तेमाल किया जाता है. ऐसा सभी Fragment इंस्टेंस के लिए नहीं किया जाता. इससे Fragment 1.2.1 में हुई रिग्रेशन की समस्या ठीक हो गई है. (b/149665169
  • Fragment 1.2.2 में जोड़े गए require___() लिंट के नियम, अब उन लोकल वैरिएबल के लिए फ़ॉल्स पॉज़िटिव नहीं होते जिनका नाम, शैडो की गई Kotlin प्रॉपर्टी के नामों (जैसे, view). (b/149891163)
  • FragmentContainerView अब Android Studio में लेआउट की झलक देखते समय UnsupportedOperationException नहीं दिखाता है. (b/149707833)
  • हमने उस समस्या को ठीक किया है जिसमें सेव किए गए स्टेट के बाद जोड़े गए रिटेन किए गए फ़्रैगमेंट, लगातार फिर से नहीं बनाए जाते थे. साथ ही, कॉन्फ़िगरेशन में हर बदलाव के बाद उन्हें मिटा दिया जाता था. (b/145832397)

वर्शन 1.2.5

वर्शन 1.2.5

10 जून, 2020

androidx.fragment:fragment:1.2.5, androidx.fragment:fragment-ktx:1.2.5, और androidx.fragment:fragment-testing:1.2.5 रिलीज़ किए गए हैं. वर्शन 1.2.5 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • अब फ़्रैगमेंट का getViewLifecycleOwner(), onSaveInstanceState() को कॉल करने से पहले बंद हो जाता है. इससे फ़्रैगमेंट के लाइफ़साइकल का व्यवहार दिखता है. इसे पहले Fragment 1.3.0-alpha04 में रिलीज़ किया गया था. (b/154645875)
  • अब किसी फ़्रैगमेंट पर setMenuVisibility(false) को कॉल करने से, उसके चाइल्ड फ़्रैगमेंट के दिए गए मेन्यू की दिखने की सेटिंग में सही तरीके से बदलाव होता है. इसे पहले Fragment 1.3.0-alpha04 में रिलीज़ किया गया था. (b/153593580)

वर्शन 1.2.4

वर्शन 1.2.4

1 अप्रैल, 2020

androidx.fragment:fragment:1.2.4, androidx.fragment:fragment-ktx:1.2.4, और androidx.fragment:fragment-testing:1.2.4 रिलीज़ किए गए हैं. वर्शन 1.2.4 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • Fragment ProGuard के नियमों को अपडेट किया गया है, ताकि रखे गए फ़्रैगमेंट को छिपाया जा सके. (b/151605338)
  • DialogFragment क्लास पर FragmentLiveDataObserve लिंट नियम को बंद कर दिया गया है, क्योंकि इनका लाइफ़साइकल और व्यू लाइफ़साइकल हमेशा सिंक में रहता है. इसलिए, observe को कॉल करते समय this या viewLifecycleOwner में से किसी का भी इस्तेमाल करना सुरक्षित होता है. (b/151765086)

वर्शन 1.2.3

वर्शन 1.2.3

18 मार्च, 2020

androidx.fragment:fragment:1.2.3, androidx.fragment:fragment-ktx:1.2.3, और androidx.fragment:fragment-testing:1.2.3 रिलीज़ किए गए हैं. वर्शन 1.2.3 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • DialogFragment में मौजूद उस गड़बड़ी को ठीक कर दिया गया है जिसकी वजह से onCreateDialog() से getLayoutInflater() को कॉल करने पर StackOverflowError होता था. (b/117894767, aosp/1258665)
  • Fragment में शामिल ProGuard के नियमों का दायरा कम किया गया है, ताकि इस्तेमाल न की गई Fragment क्लास को हटाया जा सके. (b/149665169)
  • स्थानीय वैरिएबल के ऐसे नाम का इस्तेमाल करने पर, UseRequireInsteadOfGet लिंट चेक में गलत पॉज़िटिव नतीजे ठीक किए गए हैं जो Kotlin प्रॉपर्टी के नाम से मेल खाता है. (b/149891163)
  • FragmentContainerView अब लेआउट की झलक में गलत कंस्ट्रक्टर का इस्तेमाल करने पर, UnsupportedOperationException नहीं दिखाता है. (b/149707833)

वर्शन 1.2.2

वर्शन 1.2.2

19 फ़रवरी, 2020

androidx.fragment:fragment:1.2.2, androidx.fragment:fragment-ktx:1.2.2, और androidx.fragment:fragment-testing:1.2.2 रिलीज़ किए गए हैं. वर्शन 1.2.2 में ये बदलाव शामिल हैं.

लिंट की नई जांचें

  • लिंट, onCreateView(), onViewCreated(), और onActivityCreated() में OnBackPressedDispatcher को कॉल करने के लिए, LifecycleOwner के तौर पर viewLifecycleOwner का इस्तेमाल करने का सुझाव देता है. (b/142117657)
  • एक नई लिंट जांच जोड़ी गई है. इससे यह पुष्टि होती है कि fragment-testing आर्टफ़ैक्ट का इस्तेमाल करते समय, सही debugImplementation का इस्तेमाल किया जा रहा है. (b/141500106)
  • फ़्रैगमेंट अब checkNotNull(get___()), requireNonNull(get___()) या get___()!! के बजाय, गड़बड़ी के बारे में ज़्यादा जानकारी देने वाले मैसेज के लिए, उससे जुड़े require___() तरीकों का इस्तेमाल करने का सुझाव देते हैं. ऐसा उन सभी Fragment API के लिए किया जाता है जिनमें get और require, दोनों शामिल हैं. (aosp/1202883)

गड़बड़ियां ठीक की गईं

  • R8 की चेतावनियों से बचने के लिए, Fragment ProGuard फ़ाइलों को ठीक किया गया (b/148963981)
  • मौजूदा लिंट चेक को बेहतर बनाया गया है. इसमें observe का इस्तेमाल करते समय, viewLifecycleOwner का इस्तेमाल करने का सुझाव दिया गया है. इससे observe के livedata-ktx एक्सटेंशन मेथड वर्शन को भी हैंडल किया जा सकेगा. (b/148996309)
  • कई Lint चेक के लिए फ़ॉर्मैटिंग से जुड़ी समस्या ठीक की गई (aosp/1157012)

बाहरी योगदान

  • Slack की ओर से require___() Lint की जांच करने में योगदान देने के लिए, Zac Sweers को धन्यवाद! (aosp/1202883)

वर्शन 1.2.1

वर्शन 1.2.1

5 फ़रवरी, 2020

androidx.fragment:fragment:1.2.1, androidx.fragment:fragment-ktx:1.2.1, और androidx.fragment:fragment-testing:1.2.1 रिलीज़ किए गए हैं. वर्शन 1.2.1 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • add और replace तरीकों से जोड़े गए फ़्रैगमेंट, अब अपने डिफ़ॉल्ट कंस्ट्रक्टर को ProGuard के साथ रखते हैं. ये फ़्रैगमेंट, Class इंस्टेंस (या Kotlin के रीफ़ाइड वर्शन) लेते हैं. (b/148181315)
  • finishUpdate() को चलाने पर, FragmentStatePagerAdapter और FragmentPagerAdapter अब FragmentManager से मिले अपवादों को नहीं पकड़ते. (aosp/1208711)
  • उस समस्या को ठीक किया गया है जिसमें FragmentManager.findFragment(), <fragment> टैग के ज़रिए जोड़े गए फ़्रैगमेंट के साथ काम नहीं करता था. (b/147784323)
  • <fragment> टैग का इस्तेमाल करके बढ़ाए गए फ़्रैगमेंट को अब लेआउट में होने पर, onCreate() से पहले हमेशा onInflate() को कॉल मिलता है. (aosp/1215856)
  • Calling toString() on a FragmentManager instance no longer throws a NullPointerException when the Activity is already destroyed. (b/148189412)

डिपेंडेंसी में बदलाव

वर्शन 1.2.0

वर्शन 1.2.0

22 जनवरी, 2020

androidx.fragment:fragment:1.2.0, androidx.fragment:fragment-ktx:1.2.0, और androidx.fragment:fragment-testing:1.2.0 रिलीज़ किए गए हैं. वर्शन 1.2.0 में ये बदलाव शामिल हैं.

1.1.0 के बाद हुए अहम बदलाव

  • FragmentContainerView: FragmentContainerView, डाइनैमिक तरीके से जोड़े गए फ़्रैगमेंट के लिए सबसे सही कंटेनर है. यह FrameLayout या अन्य लेआउट की जगह इस्तेमाल किया जाता है. यह <fragment> टैग की तरह ही class, android:name, और android:tag (ज़रूरी नहीं) का इस्तेमाल करता है. हालांकि, यह शुरुआती फ़्रैगमेंट को जोड़ने के लिए, <fragment> के कस्टम कोड पाथ के बजाय सामान्य FragmentTransaction का इस्तेमाल करता है.
  • onDestroyView() का समय: अब फ़्रैगमेंट, onDestroyView() को कॉल करने से पहले, एक्ज़िट ऐनिमेशन, एक्ज़िट फ़्रेमवर्क ट्रांज़िशन, और एक्ज़िट AndroidX ट्रांज़िशन (ट्रांज़िशन 1.3.0 का इस्तेमाल करते समय) के पूरा होने का इंतज़ार करते हैं.
  • क्लास पर आधारित add() और replace(): FragmentTransaction पर add() और replace() के नए ओवरलोड जोड़े गए हैं. ये Class<? extends Fragment> और Bundle के वैकल्पिक आर्ग्युमेंट लेते हैं. ये तरीके, जोड़ने के लिए Fragment का इंस्टेंस बनाने के लिए, आपके FragmentFactory का इस्तेमाल करते हैं. रीफ़ाइड टाइप (यानी कि fragmentTransaction.replace<YourFragment>(R.id.container)) का इस्तेमाल करने वाले Kotlin एक्सटेंशन को भी fragment-ktx में जोड़ा गया है.
  • Lifecycle ViewModel SavedState इंटिग्रेशन: SavedStateViewModelFactory अब by viewModels(), by activityViewModels(), ViewModelProvider कंस्ट्रक्टर या Fragment के साथ ViewModelProviders.of() का इस्तेमाल करते समय, डिफ़ॉल्ट फ़ैक्ट्री के तौर पर इस्तेमाल किया जाता है.
  • लिंट की नई जांच: लिंट की एक नई जांच जोड़ी गई है. इससे यह पक्का किया जा सकेगा कि onCreateView(), onViewCreated() या onActivityCreated() से LiveData को मॉनिटर करते समय, getViewLifecycleOwner() का इस्तेमाल किया जा रहा हो.
  • getFragmentManager() बंद होना: Fragment पर मौजूद getFragmentManager() और requireFragmentManager() तरीकों को बंद कर दिया गया है. इनकी जगह getParentFragmentManager() तरीके का इस्तेमाल किया जा सकता है. यह तरीका, उस FragmentManager को दिखाता है जिसमें Fragment जोड़ा गया है. हालांकि, यह शून्य नहीं होना चाहिए. isAdded() का इस्तेमाल करके यह पता लगाया जा सकता है कि इसे कॉल करना सुरक्षित है या नहीं.
  • FragmentManager.enableDebugLogging() पर रोक: स्टैटिक FragmentManager.enableDebugLogging मेथड पर रोक लगा दी गई है. FragmentManager अब टैग FragmentManager के लिए Log.isLoggable() का पालन करता है. इससे आपको अपने ऐप्लिकेशन को फिर से कंपाइल किए बिना, DEBUG या VERBOSE लॉगिंग को चालू करने की सुविधा मिलती है.

मौजूदा समस्याएं

  • सिर्फ़ FragmentContainerView पर class या android:name एट्रिब्यूट के ज़रिए रेफ़र किए गए फ़्रैगमेंट को ProGuard अपने-आप नहीं रखता है. इसलिए, आपको हर फ़्रैगमेंट क्लास के लिए, मैन्युअल तरीके से कीप नियम जोड़ना होगा. (b/142601969)
  • एक्सएमएल में FragmentContainerView के साथ class या android:name का इस्तेमाल करके NavHostFragment जोड़ते समय, अपनी ऐक्टिविटी के onCreate() में findNavController() का इस्तेमाल नहीं किया जा सकता. (b/142847973)

वर्शन 1.2.0-rc05

8 जनवरी, 2020

androidx.fragment:fragment:1.2.0-rc05, androidx.fragment:fragment-ktx:1.2.0-rc05, और androidx.fragment:fragment-testing:1.2.0-rc05 रिलीज़ किए गए हैं. वर्शन 1.2.0-rc05 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • <fragment> टैग का इस्तेमाल करते समय, Fragment 1.2.0-rc04 में हुई रिग्रेशन की समस्या को ठीक किया गया है. इस वजह से, गतिविधि बंद होने के दौरान onViewCreated() को गलत तरीके से कॉल किया जाता था. (b/146290333)
  • <fragment> टैग की मदद से जोड़े गए फ़्रैगमेंट के लिए, अब नॉन-कॉन्फ़िग को सही तरीके से हटाया जाता है.ऐसा तब भी होता है, जब वे लेआउट में कभी-कभी ही दिखते हैं. जैसे, सिर्फ़ आपके लैंडस्केप लेआउट में. इस वजह से, इन फ़्रैगमेंट को अब CREATED में सही तरीके से ले जाया जाता है. भले ही, वे आपके लेआउट में न हों. ऐसा इसलिए किया जाता है, ताकि उन्हें इंस्टैंटिएट न किया जाए, लेकिन वे किसी भी लाइफ़साइकल के तरीके से न गुज़रें. (b/145769287)

वर्शन 1.2.0-rc04

18 दिसंबर, 2019

androidx.fragment:fragment:1.2.0-rc04, androidx.fragment:fragment-ktx:1.2.0-rc04, और androidx.fragment:fragment-testing:1.2.0-rc04 रिलीज़ किए गए हैं. वर्शन 1.2.0-rc04 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • विज़ुअल से जुड़ी समस्याओं से बचने के लिए, TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE, और TRANSIT_FRAGMENT_FADE के ऐनिमेशन में बदलाव किया गया है. (b/145468417)

वर्शन 1.2.0-rc03

4 दिसंबर, 2019

androidx.fragment:fragment:1.2.0-rc03, androidx.fragment:fragment-ktx:1.2.0-rc03, और androidx.fragment:fragment-testing:1.2.0-rc03 रिलीज़ किए गए हैं. वर्शन 1.2.0-rc03 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • अनचाहे व्यवहार में हुए बदलाव को ठीक किया गया है. इसमें, हटाए गए फ़्रैगमेंट को अब भी findFragmentById() / findFragmentByTag() से वापस लाया जा सकता है, जबकि उनके एक्ज़िट ऐनिमेशन/ट्रांज़िशन चल रहे हैं. (b/143982969, aosp/1167585)
  • अब पैरंट फ़्रैगमेंट के बंद होने से पहले, चाइल्ड फ़्रैगमेंट सही तरीके से बंद हो जाते हैं. ऐसा तब होता है, जब कंटेनिंग ऐक्टिविटी onSaveInstanceState() को कॉल करती है. (b/144380645)
  • छिपे हुए फ़्रैगमेंट को पॉप करने के बाद, व्यू को गलत तरीके से INVISIBLE के तौर पर मार्क करने की समस्या को ठीक किया गया है. (b/70793925)
  • शेयर किए गए एलिमेंट के ट्रांज़िशन वाले फ़्रैगमेंट अब घुमाए गए, स्केल किए गए वगैरह व्यू को हैंडल करते हैं (b/142835261)

दस्तावेज़ से जुड़े अपडेट

  • setUserVisibleHint() के बंद होने से जुड़े दस्तावेज़ को अपडेट किया गया. (b/143897055)
  • setFragmentFactory() और getFragmentFactory() के दस्तावेज़ को बेहतर बनाया गया है, ताकि यह साफ़ तौर पर बताया जा सके कि FragmentFactory सेट करने से, चाइल्ड FragmentManager पर भी असर पड़ेगा. (aosp/1170095)

डिपेंडेंसी में बदलाव

  • अब फ़्रैगमेंट, लाइफ़साइकल 2.2.0-rc03, लाइफ़साइकल ViewModel SavedState 1.0.0-rc03, और ऐक्टिविटी 1.1.0-rc03 पर निर्भर करता है.

वर्शन 1.2.0-rc02

7 नवंबर, 2019

androidx.fragment:fragment:1.2.0-rc02, androidx.fragment:fragment-ktx:1.2.0-rc02, और androidx.fragment:fragment-testing:1.2.0-rc02 रिलीज़ किए गए हैं. वर्शन 1.2.0-rc02 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • Kotlin में, onCreateView(), onViewCreated() या onActivityCreated() से LiveData को मॉनिटर करते समय getViewLifecycleOwner() का इस्तेमाल करने के लिए, LintFix अब getViewLifecycleOwner() के बजाय Kotlin प्रॉपर्टी ऐक्सेस सिंटैक्स viewLifecycleOwner का इस्तेमाल करता है. यह सुविधा Fragment 1.2.0-rc01 में जोड़ी गई थी. (aosp/1143821)

वर्शन 1.2.0-rc01

23 अक्टूबर, 2019

androidx.fragment:fragment:1.2.0-rc01, androidx.fragment:fragment-ktx:1.2.0-rc01, और androidx.fragment:fragment-testing:1.2.0-rc01 रिलीज़ किए गए हैं. वर्शन 1.2.0-rc01 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • FragmentContainerView अब android:name के साथ-साथ class एट्रिब्यूट के साथ भी काम करता है. यह <fragment> टैग की तरह ही काम करता है. (b/142722242)
  • नया Lint चेक जोड़ा गया है. इससे यह पक्का किया जा सकेगा कि onCreateView(), onViewCreated() या onActivityCreated() से LiveData को मॉनिटर करते समय, getViewLifecycleOwner() का इस्तेमाल किया जा रहा हो. (b/137122478)

गड़बड़ियां ठीक की गईं

  • DialogFragment पर onDismiss और onCancel कॉलबैक अब यह गारंटी देते हैं कि उन्हें पास किया गया DialogInterface, शून्य नहीं है. साथ ही, जब उन्हें लागू किया जाता है, तो getDialog() शून्य नहीं होता. (b/141974033)
  • FragmentContainerView अब class या android:name से तय किए गए फ़्रैगमेंट को इन्फ़्लेशन के हिस्से के तौर पर जोड़ता है. इससे यह पक्का होता है कि findFragmentById() और findFragmentByTag() तुरंत काम करें. (b/142520327)
  • स्टेट सेव होने की वजह से, FragmentContainerView में मौजूद IllegalStateException को ठीक किया गया. (b/142580713)
  • FragmentContainerView क्लास को अस्पष्ट किए जाने पर, FragmentContainerView में मौजूद UnsupportedOperationException को ठीक किया गया है. (b/142657034)

सामान्य समस्याएं

  • सिर्फ़ FragmentContainerView पर class या android:name एट्रिब्यूट के ज़रिए रेफ़र किए गए फ़्रैगमेंट को ProGuard अपने-आप नहीं रखता है. इसलिए, आपको हर फ़्रैगमेंट क्लास के लिए, मैन्युअल तरीके से कीप नियम जोड़ना होगा. हमने Lint के उस नियम को बंद कर दिया है जिसमें FragmentContainerView पर माइग्रेट करने का सुझाव दिया जाता है. ऐसा तब तक किया गया है, जब तक aapt2 के ज़रिए इस समस्या को ठीक नहीं कर दिया जाता. (b/142601969)

वर्शन 1.2.0-beta02

11 अक्टूबर, 2019

androidx.fragment:fragment:1.2.0-beta02, androidx.fragment:fragment-ktx:1.2.0-beta02, और androidx.fragment:fragment-testing:1.2.0-beta02 रिलीज़ किए गए हैं. वर्शन 1.2.0-beta02 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • उस समस्या को ठीक किया गया है जिसमें फ़्रैगमेंट onInflate() को FragmentContainerView से सही एट्रिब्यूट नहीं मिलते थे. इससे NavHostFragment जैसे मामलों में समस्या आ रही थी. (b/142421837)

वर्शन 1.2.0-beta01

9 अक्टूबर, 2019

androidx.fragment:fragment:1.2.0-beta01, androidx.fragment:fragment-ktx:1.2.0-beta01, और androidx.fragment:fragment-testing:1.2.0-beta01 रिलीज़ किए गए हैं. वर्शन 1.2.0-beta01 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • FragmentContainerView की मदद से, शुरुआती फ़्रैगमेंट जोड़ा जा सकता है. साथ ही, android:name और android:tag एक्सएमएल एट्रिब्यूट के लिए भी सहायता जोड़ी गई है. हालांकि, एक्सएमएल एट्रिब्यूट का इस्तेमाल करना ज़रूरी नहीं है. <fragment> टैग के उलट, FragmentContainerView शुरुआती फ़्रैगमेंट जोड़ने के लिए, सामान्य FragmentTransaction का इस्तेमाल करता है. इससे FragmentContainerView पर FragmentTransaction के अन्य ऑपरेशन किए जा सकते हैं. साथ ही, लेआउट के लिए व्यू बाइंडिंग का इस्तेमाल किया जा सकता है. (b/139830628, b/141177981)
  • Fragments में अब Lint की चेतावनी शामिल है. इससे, <fragment> को FragmentContainerView से बदलने का सुझाव मिलता है. (b/139830056)

गड़बड़ियां ठीक की गईं

  • androidx.transition का इस्तेमाल करते समय, ClassCastException से जुड़ी समस्या ठीक की गई. (b/140680619)
  • Transition 1.3.0-beta01 का इस्तेमाल करते समय, फ़्रैगमेंट अब androidx.transition ट्रांज़िशन के पूरा होने का इंतज़ार करते हैं. इसके अलावा, वे फ़्रेमवर्क ट्रांज़िशन और ऐनिमेशन के पूरा होने का इंतज़ार भी करते हैं. इन दोनों को Fragment 1.2.0-alpha03 और Fragment 1.2.0-alpha02 में ठीक किया गया था. इसके बाद ही, वे onDestroyView() को डिसपैच करते हैं. (aosp/1119841)
  • ट्रांज़िशन 1.3.0-beta01 का इस्तेमाल करते समय, फ़्रैगमेंट अब एक ही कंटेनर पर नए ट्रांज़िशन / ऐनिमेशन शुरू करने से पहले, androidx.transition ट्रांज़िशन को सही तरीके से रद्द कर देते हैं. (aosp/1119841)
  • FragmentContainerView का इस्तेमाल करते समय, API 17 और इससे पहले के वर्शन पर एक समस्या ठीक की गई है. यह समस्या, androidx.transition का इस्तेमाल करते समय आपके फ़्रैगमेंट के रूट व्यू पर ट्रांज़िशन का इस्तेमाल करने पर होती थी. (b/140361893)
  • fragment-testing आर्टफ़ैक्ट अब AndroidX Test 1.2.0 पर निर्भर करता है. इससे Espresso 3.2.0 के नए वर्शन के साथ काम न करने की समस्या ठीक हो गई है. (b/139100149)
  • FragmentManager में Log.w का इस्तेमाल बंद कर दिया गया है. (aosp/1126468)

सामान्य समस्याएं

  • फ़्रैगमेंट के onInflate() को FragmentContainerView से सही एट्रिब्यूट नहीं मिलते हैं. इससे NavHostFragment जैसे मामले सामने आते हैं. (b/142421837)

वर्शन 1.2.0-alpha04

18 सितंबर, 2019

androidx.fragment:fragment:1.2.0-alpha04, androidx.fragment-ktx:example:1.2.0-alpha04, और androidx.fragment:fragment-testing:1.2.0-alpha04 रिलीज़ किए गए हैं. वर्शन 1.2.0-alpha04 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • Fragment पर getFragmentManager() और requireFragmentManager() तरीकों को बंद कर दिया गया है. इनकी जगह getParentFragmentManager() तरीके का इस्तेमाल किया जा सकता है. यह तरीका, उस FragmentManager को दिखाता है जिसमें Fragment जोड़ा गया है. हालांकि, यह तरीका सिर्फ़ तब काम करता है, जब शून्य न हो. isAdded() का इस्तेमाल करके यह पता लगाया जा सकता है कि इस तरीके को कॉल करना सुरक्षित है या नहीं. (b/140574496)
  • स्टैटिक FragmentManager.enableDebugLogging तरीके को बंद कर दिया गया है. FragmentManager अब टैग FragmentManager के लिए Log.isLoggable() का पालन करता है. इससे आपको अपने ऐप्लिकेशन को फिर से कंपाइल किए बिना, DEBUG या VERBOSE लॉगिंग को चालू करने की सुविधा मिलती है. (aosp/1116591)

गड़बड़ियां ठीक की गईं

  • अब अन्य फ़्रैगमेंट पर एक्ज़िट ऐनिमेशन चलने के दौरान, फ़्रैगमेंट ठीक से बंद हो जाते हैं. (b/140574199)
  • उस समस्या को ठीक किया गया है जिसकी वजह से फ़्रैगमेंट, Activity.findViewById() को कॉल करते थे. हालांकि, पहले ऐसा नहीं होता था. (aosp/1116431)

वर्शन 1.2.0-alpha03

5 सितंबर, 2019

androidx.fragment:fragment:1.2.0-alpha03, androidx.fragment:fragment-ktx:1.2.0-alpha03, और androidx.fragment:fragment-testing:1.2.0-alpha03 रिलीज़ किए गए हैं. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.

एपीआई में हुए बदलाव

  • FragmentContainerView की कीमत अब final है. (b/140133091)

गड़बड़ियां ठीक की गईं

  • FragmentContainerView अब बैक स्टैक से फ़्रैगमेंट हटाते समय, ड्रॉ ऑर्डर को सही तरीके से उलट देता है. (b/139104187)
  • उस समस्या को ठीक कर दिया गया है जिसकी वजह से, फ़्रैगमेंट को पॉप करते समय और एक नया फ़्रैगमेंट जोड़ते समय, गलत ऐनिमेशन चलता था. (b/111659726)
  • अब फ़्रैगमेंट, onDestroyView() को भेजने से पहले ट्रांज़िशन के पूरा होने का इंतज़ार करते हैं. इससे पहले, वे ऐनिमेशन के पूरा होने का इंतज़ार करते थे. इस समस्या को Fragment 1.2.0-alpha02 में ठीक कर दिया गया था. (b/138741697)

वर्शन 1.2.0-alpha02

7 अगस्त, 2019

androidx.fragment:fragment:1.2.0-alpha02, androidx.fragment:fragment-ktx:1.2.0-alpha02, और androidx.fragment:fragment-testing:11.2.0-alpha02 रिलीज़ किया गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.

नई सुविधाएं

  • SavedStateViewModelFactory अब डिफ़ॉल्ट फ़ैक्ट्री है. इसका इस्तेमाल by viewModels(), by activityViewModels(), ViewModelProvider कंस्ट्रक्टर या Fragment के साथ ViewModelProviders.of() का इस्तेमाल करते समय किया जाता है. (b/135716331)
  • FragmentTransaction पर setTransition के साथ TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE, TRANSIT_FRAGMENT_FADE का इस्तेमाल करने पर दिखने वाले डिफ़ॉल्ट ऐनिमेशन को अपडेट कर दिया गया है. अब ये ऐनिमेशन, Android 10 डिवाइसों पर ऐक्टिविटी के दौरान इस्तेमाल किए जाने वाले ऐनिमेशन से मेल खाते हैं. (aosp/1012812, aosp/1014730)

एपीआई में हुए बदलाव

  • FragmentContainerView को डाइनैमिक तरीके से जोड़े गए फ़्रैगमेंट के लिए, सबसे ज़्यादा सुझाव दिए जाने वाले कंटेनर के तौर पर पेश किया गया है. यह FrameLayout वगैरह के इस्तेमाल की जगह लेता है. ऐसा इसलिए, क्योंकि यह ऐनिमेशन की z-ऑर्डरिंग की समस्याओं को ठीक करता है और विंडो इंसर्ट को फ़्रैगमेंट में भेजता है. (b/37036000, aosp/985243, b/136494650)
  • हमने एक स्टैटिक FragmentManager.findFragment(View) तरीका जोड़ा है. इससे, फ़्रैगमेंट से बढ़ाए गए व्यू से, फ़्रैगमेंट को वापस पाया जा सकता है. Kotlin एक्सटेंशन भी fragment-ktx में उपलब्ध है. (aosp/1090757)
  • FragmentTransaction पर add() और replace() के नए ओवरलोड जोड़े गए हैं. ये Class<? extends Fragment> और वैकल्पिक Bundle आर्ग्युमेंट लेते हैं. ये तरीके, जोड़ने के लिए Fragment का इंस्टेंस बनाने के लिए, आपके FragmentFactory का इस्तेमाल करते हैं. रीफ़ाइड टाइप (यानी कि fragmentTransaction.replace<YourFragment>(R.id.container)) का इस्तेमाल करने वाले Kotlin एक्सटेंशन को भी fragment-ktx में जोड़ा गया है. (b/126124987)
  • @MainThread एनोटेशन को Fragment लाइफ़साइकल कॉलबैक में जोड़ा गया है. (b/127272564)
  • FragmentTransaction और FragmentManager.BackStackEntry पर ब्रेडक्रंब टाइटल से जुड़े एपीआई अब काम नहीं करते. (b/138252944)
  • FragmentTransaction पर मौजूद setTransitionStyle तरीके का इस्तेमाल अब नहीं किया जा सकता. (aosp/1011537)
  • FragmentManager में दिए गए कई तरीके अब abstract नहीं हैं. FragmentManager खुद abstract रहता है. इसे सीधे तौर पर इंस्टैंशिएट या बढ़ाया नहीं जाना चाहिए. आपको सिर्फ़ getSupportFragmentManager(), getChildFragmentManager() वगैरह से मौजूदा इंस्टेंस मिलता रहेगा.

गड़बड़ियां ठीक की गईं

  • फ़्रैगमेंट 1.1.0-rc04 से: अब फ़्रैगमेंट, फ़्रैगमेंट पर रोके गए ट्रांज़िशन को सही तरीके से रद्द करते हैं. (b/138251858)
  • फ़्रैगमेंट 1.1.0-rc03: उस समस्या को ठीक किया गया है जिसमें एक से ज़्यादा बार टाइम आउट के साथ postponeEnterTransition() को कॉल करने पर, पिछले टाइम आउट रद्द नहीं होते थे. (b/137797118)
  • Fragment 1.1.0-rc02: मौजूदा आइटम को हटाते समय, FragmentPagerAdapter और FragmentStatePagerAdapter में क्रैश होने की समस्या को ठीक किया गया है. (b/137209870)
  • अब फ़्रैगमेंट, onDestroyView() को डिसपैच करने से पहले, ऐनिमेशन के खत्म होने का इंतज़ार करते हैं. (b/136110528)
  • पैरंट फ़्रैगमेंट को ऐनिमेट करते समय, चाइल्ड फ़्रैगमेंट और उनके डिसेंडेंट के फ़्रैगमेंट ऐनिमेशन को अब ठीक से हैंडल किया जाता है. (b/116675313)
  • शेयर किए गए एलिमेंट ट्रांज़िशन का इस्तेमाल करते समय, पॉप और ऐड ऑपरेशन को एक साथ इस्तेमाल करने पर होने वाली NullPointerException को ठीक किया गया है. (b/120507394)
  • Robolectric टेस्ट में FragmentPagerAdapter और FragmentStatePagerAdapter का इस्तेमाल करते समय, IllegalStateExceptions के लिए एक तरीका जोड़ा गया. (b/137201343)

वर्शन 1.2.0-alpha01

2 जुलाई, 2019

androidx.fragment:fragment:1.2.0-alpha01, androidx.fragment:fragment-ktx:1.2.0-alpha01, और androidx.fragment:fragment-testing:1.2.0-alpha01 रिलीज़ किए गए हैं. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.

नई सुविधाएं

  • FragmentManager अब Fragment के व्यू को अटैच करने के बाद और onViewCreated() को कॉल करने से ठीक पहले requestApplyInsets() को कॉल करता है. इससे यह पक्का होता है कि आपके व्यू में हमेशा सही इंसर्ट मौजूद हों. (b/135945162)

गड़बड़ियां ठीक की गईं

  • replace() से पहले setPrimaryNavigationFragment() का इस्तेमाल करने वाले FragmentTransaction को पॉप अप करते समय, NullPointerException को ठीक किया गया. (b/134673465)

वर्शन 1.1.0

वर्शन 1.1.0

5 सितंबर, 2019

androidx.fragment:fragment:1.1.0, androidx.fragment:fragment-ktx:1.1.0, और androidx.fragment:fragment-testing:1.1.0 रिलीज़ किए गए हैं. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.

1.0.0 के बाद हुए अहम बदलाव

  • fragment-testing: fragment-testing आर्टफ़ैक्ट, किसी फ़्रैगमेंट को अलग से टेस्ट करने के लिए FragmentScenario क्लास उपलब्ध कराता है. ज़्यादा जानकारी के लिए, अपने ऐप्लिकेशन के फ़्रैगमेंट की जांच करने से जुड़ा दस्तावेज़ देखें.
  • FragmentFactory: अब फ़्रैगमेंट इंस्टेंस बनाने की प्रोसेस को मैनेज करने के लिए, FragmentManager पर FragmentFactory सेट किया जा सकता है. इससे, नो-आर्ग्युमेंट कंस्ट्रक्टर की ज़रूरत नहीं पड़ती.
  • ViewModels के लिए Kotlin प्रॉपर्टी डेलिगेट: fragment-ktx आर्टफ़ैक्ट में अब दो Kotlin प्रॉपर्टी डेलिगेट शामिल हैं: by viewModels() का इस्तेमाल, अलग-अलग फ़्रैगमेंट से जुड़े ViewModels को ऐक्सेस करने के लिए किया जाता है. वहीं, by activityViewModels() का इस्तेमाल, ऐक्टिविटी के स्कोप वाले ViewModels को ऐक्सेस करने के लिए किया जाता है.
  • ज़्यादा से ज़्यादा लाइफ़साइकल: अब FragmentTransaction पर setMaxLifecycle() को कॉल करके, किसी फ़्रैगमेंट के लिए ज़्यादा से ज़्यादा लाइफ़साइकल की स्थिति सेट की जा सकती है. यह अब काम न करने वाले setUserVisibleHint() की जगह ले लेगा. FragmentPagerAdapter और FragmentStatePagerAdapter में एक नया कंस्ट्रक्टर है. इसकी मदद से, नए बिहेवियर पर स्विच किया जा सकता है.
  • FragmentActivity LayoutId कंस्ट्रक्टर: FragmentActivity की सबक्लास अब FragmentActivity पर कंस्ट्रक्टर को कॉल कर सकती हैं. यह कंस्ट्रक्टर, R.layout आईडी लेता है. इससे पता चलता है कि onCreate() में setContentView() को कॉल करने के बजाय, किस लेआउट को कॉन्टेंट व्यू के तौर पर सेट किया जाना चाहिए. इससे इस ज़रूरत में कोई बदलाव नहीं होता कि आपके सबक्लास में नो-आर्ग्युमेंट कंस्ट्रक्टर होना चाहिए.
  • Fragment LayoutId constructor: Fragment की सबक्लास अब Fragment पर कंस्ट्रक्टर को कॉल कर सकती हैं. यह कंस्ट्रक्टर, R.layout आईडी लेता है. इससे पता चलता है कि इस फ़्रैगमेंट के लिए, onCreateView() को बदलने के बजाय किस लेआउट का इस्तेमाल किया जाना चाहिए. लेआउट को onViewCreated() में कॉन्फ़िगर किया जा सकता है.
  • टाइम आउट के साथ बाद में करें: postponeEnterTransition() का नया ओवरलोड जोड़ा गया है, जिसमें टाइम आउट लगता है.

वर्शन 1.1.0-rc04

7 अगस्त, 2019

androidx.fragment:fragment:1.1.0-rc04, androidx.fragment:fragment-ktx:1.1.0-rc04, और androidx.fragment:fragment-testing:1.1.0-rc04 रिलीज़ किया गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.

गड़बड़ियां ठीक की गईं

  • अब फ़्रैगमेंट, फ़्रैगमेंट पर रोकी गई ट्रांज़िशन को सही तरीके से रद्द करते हैं. (b/138251858)

वर्शन 1.1.0-rc03

19 जुलाई, 2019

androidx.fragment:fragment:1.1.0-rc03, androidx.fragment:fragment-ktx:1.1.0-rc03, और androidx.fragment:fragment-testing:1.1.0-rc03 रिलीज़ किया गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.

गड़बड़ियां ठीक की गईं

  • उस समस्या को ठीक किया गया है जिसमें टाइम आउट की अवधि के साथ postponeEnterTransition() को एक से ज़्यादा बार कॉल करने पर, पिछले टाइम आउट रद्द नहीं होते थे. (b/137797118)

वर्शन 1.1.0-rc02

17 जुलाई, 2019

androidx.fragment:fragment:1.1.0-rc02, androidx.fragment:fragment-ktx:1.1.0-rc02, और androidx.fragment-testing:fragment:1.1.0-rc02 रिलीज़ किए गए हैं. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.

गड़बड़ियां ठीक की गईं

  • मौजूदा आइटम को हटाते समय, FragmentPagerAdapter और FragmentStatePagerAdapter में क्रैश होने की समस्या को ठीक किया गया है. (b/137209870)

वर्शन 1.1.0-rc01

2 जुलाई, 2019

androidx.fragment:fragment:1.1.0-rc01, androidx.fragment:fragment-ktx:1.1.0-rc01, और androidx.fragment:fragment-testing:1.1.0-rc01 रिलीज़ किए गए हैं. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.

गड़बड़ियां ठीक की गईं

  • ट्रांज़िशन के दौरान show() या hide() कार्रवाइयों का इस्तेमाल करने पर, फ़्रैगमेंट अब अपनी दृश्यता को सही तरीके से अपडेट करते हैं. (b/133385058)
  • replace() से पहले setPrimaryNavigationFragment() का इस्तेमाल करने वाले FragmentTransaction को पॉप अप करते समय, NullPointerException को ठीक किया गया. (b/134673465)

वर्शन 1.1.0-beta01

5 जून, 2019

androidx.fragment:fragment:1.1.0-beta01, androidx.fragment:fragment-ktx:1.1.0-beta01, और androidx.fragment:fragment-testing:1.1.0-beta01 रिलीज़ किए गए हैं. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.

गड़बड़ियां ठीक की गईं

  • नेस्ट किए गए फ़्रैगमेंट के लिए, androidx.lifecycle.Lifecycle कॉलबैक (खास तौर पर STARTED, RESUMED, PAUSED, STOPPED, और DESTROYED से जुड़े) अब सही तरीके से नेस्ट किए गए हैं. (b/133497591)
  • अब फ़्रैगमेंट के onCreate() में रजिस्टर किए गए OnBackPressedCallback इंस्टेंस, चाइल्ड FragmentManager से ज़्यादा प्राथमिकता लेते हैं. (b/133175997)
  • पैरंट फ़्रैगमेंट को बदलने पर, चाइल्ड फ़्रैगमेंट अब ऐनिमेट नहीं होते. (b/121017790)
  • animateLayoutChanges="true" का इस्तेमाल करते समय, फ़्रैगमेंट के ऐनिमेशन और ट्रांज़िशन को अब अनदेखा कर दिया जाता है. इससे उस समस्या को ठीक किया गया है जिसमें फ़्रैगमेंट सही तरीके से डिस्ट्रॉय नहीं होते थे. (b/116257087)

वर्शन 1.1.0-alpha09

16 मई, 2019

androidx.fragment:fragment:1.1.0-alpha09, androidx.fragment:fragment-ktx:1.1.0-alpha09, और androidx.fragment:fragment-testing:1.1.0-alpha09 रिलीज़ किए गए हैं. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.

एपीआई में हुए बदलाव

  • प्राइमरी नेविगेशन फ़्रैगमेंट बदलने पर, फ़्रैगमेंट को अब नए onPrimaryNavigationFragmentChanged(boolean) तरीके से कॉलबैक मिलता है. aosp/960857

गड़बड़ियां ठीक की गईं

  • चाइल्ड फ़्रैगमेंट की वजह से बढ़े हुए मेन्यू आइटम, अब पैरंट फ़्रैगमेंट को हटाने पर सही तरीके से हटा दिए जाते हैं. b/131581013

वर्शन 1.1.0-alpha08

7 मई, 2019

androidx.fragment:fragment:1.1.0-alpha08, androidx.fragment:fragment-ktx:1.1.0-alpha08, और androidx.fragment:fragment-testing:1.1.0-alpha08 रिलीज़ किए गए हैं. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.

यह रिलीज़, Preferences 1.1.0-alpha01 से लेकर 1.1.0-alpha04 तक के वर्शन के साथ काम नहीं करती. Fragments के इस वर्शन का इस्तेमाल करते समय, कृपया Preferences 1.1.0-alpha05 पर अपग्रेड करें.

नई सुविधाएं

  • postponeEnterTransition() का नया ओवरलोड जोड़ा गया है. यह एक टाइमआउट लेता है. इसके बाद, फ़्रैगमेंट अपने-आप startPostponedEnterTransition() b/120803208 को कॉल करेगा

एपीआई में हुए बदलाव

  • बदलाव: पहले से बंद किए जा चुके FragmentFactory instantiate तरीके को हटा दिया गया है. यह तरीका Bundle लेता था. aosp/953856
  • बदलाव: FragmentPagerAdapter और FragmentStatePagerAdapter में मौजूद RESUME_ONLY_CURRENT_FRAGMENT और USE_SET_USER_VISIBLE_HINT कॉन्स्टेंट का नाम बदलकर, क्रमशः BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT और BEHAVIOR_SET_USER_VISIBLE_HINT कर दिया गया है. aosp/954782

गड़बड़ियां ठीक की गईं

  • setMaxLifecycle() के ज़रिए जिन फ़्रैगमेंट के लाइफ़साइकल को सीमित किया गया है वे अब अपनी फ़ाइनल स्टेट तक पहुंचने से पहले फिर से शुरू नहीं होते. b/131557151
  • setMaxLifecycle(Lifecycle.State.CREATED) का इस्तेमाल करने पर, फ़्रैगमेंट का व्यू सही तरीके से खत्म हो जाएगा. aosp/954180

वर्शन 1.1.0-alpha07

25 अप्रैल, 2019

androidx.fragment:fragment:1.1.0-alpha07, androidx.fragment:fragment-ktx:1.1.0-alpha07, और androidx.fragment:fragment-testing:1.1.0-alpha07 रिलीज़ किए गए हैं. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.

नई सुविधाएं

  • अब FragmentTransaction पर setMaxLifecycle() को कॉल करके, किसी फ़्रैगमेंट के लिए लाइफ़साइकल की ज़्यादा से ज़्यादा स्थिति सेट की जा सकती है. यह अब काम न करने वाले setUserVisibleHint() की जगह ले लेगा. FragmentPagerAdapter और FragmentStatePagerAdapter में एक नया कंस्ट्रक्टर है. इसकी मदद से, नए बिहेवियर पर स्विच किया जा सकता है. (b/129780800)

एपीआई में हुए बदलाव

  • moveToState(STARTED) को अब सिर्फ़ एपीआई 24 या इसके बाद के वर्शन वाले डिवाइसों पर कॉल किया जा सकता है.FragmentScenario (b/129880016)

व्यवहार में बदलाव

  • (b/129907905) की वजह से, बैक स्टैक पर मौजूद फ़्रैगमेंट को, होस्टिंग ऐक्टिविटी के फिर से बनाए जाने पर onCreateView() का कॉलबैक नहीं मिलेगा. अब onCreateView() को सिर्फ़ तब कॉल किया जाएगा, जब फ़्रैगमेंट दिखने लगेगा. इसका मतलब है कि बैक स्टैक को पॉप किया गया है.

गड़बड़ियां ठीक की गईं

  • एक्सएमएल में <fragment> टैग और FragmentActivity या AppCompatActivity के contentLayoutId कंस्ट्रक्टर का इस्तेमाल करते समय होने वाली समस्या को ठीक किया गया है. (b/129907905)
  • उस समस्या को ठीक किया गया है जिसमें कॉन्फ़िगरेशन में बदलाव होने के बाद, बैक स्टैक पर मौजूद फ़्रैगमेंट को कम से कम CREATED में नहीं ले जाया जाता था. इस वजह से, ViewModels और चाइल्ड रीटेन किए गए फ़्रैगमेंट को सही तरीके से डिस्पोज़ नहीं किया जाता था. (b/129593351)
  • इंस्टेंस की स्थिति सेव होने के बाद, सेव किए गए फ़्रैगमेंट के डिसिंक होने की वजह से, restoreSaveState में क्रैश होने की समस्या को ठीक किया गया है. (b/130433793) (aosp/947824)
  • उन समस्याओं को ठीक किया गया है जिनमें अगर FragmentManager में बैक स्टैक होता था, तो फ़्रैगमेंट के लाइफ़साइकल के साथ जोड़ा गया OnBackPressedCallback कॉल नहीं किया जाता था. ज़्यादा जानकारी के लिए, androidx.activity 1.0.0-alpha07 देखें. (aosp/948209)
  • फ़्रैगमेंट अब ऐनिमेशन के लिए LAYER_TYPE_HARDWARE लागू नहीं करते. अगर आपको खास तौर पर हार्डवेयर लेयर ऐनिमेशन की ज़रूरत है, तो कृपया इसे अपने ऐनिमेशन के हिस्से के तौर पर सेट करें. (b/129486478)

वर्शन 1.1.0-alpha06

3 अप्रैल, 2019

androidx.fragment:fragment:1.1.0-alpha06, androidx.fragment:fragment-ktx:1.1.0-alpha06, और androidx.fragment:fragment-testing:1.1.0-alpha06 रिलीज़ किए गए हैं. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.

नई सुविधाएं

  • FragmentManager से थ्रो किए गए अपवादों में, अब मैसेज में फ़्रैगमेंट का नाम शामिल होता है. (b/67759402)

एपीआई में हुए बदलाव

  • Fragment और FragmentActivity में अब एक दूसरा कंस्ट्रक्टर शामिल है, जो @LayoutRes int लेता है. यह आपकी क्लास को @ContentView से एनोटेट करने के पिछले तरीके की जगह लेता है. यह तरीका, ऐप्लिकेशन और लाइब्रेरी मॉड्यूल, दोनों में काम करता है. (b/128352521)
  • FragmentActivity के onActivityResult() को अब @CallSuper के तौर पर सही तरीके से मार्क किया गया है. (b/127971684)
  • FragmentFactory का instantiate तरीका, Bundle आर्ग्युमेंट लेता है. इसे अब इस्तेमाल नहीं किया जा सकता. ऐप्लिकेशन को instantiate के नए ओवरलोड का इस्तेमाल करना चाहिए, जो Bundle नहीं लेता है. (b/128836103)
  • FragmentScenario तरीकों को अब @StyleRes के साथ सही तरीके से एनोटेट किया गया है. (aosp/924193)
  • FragmentTabHost का अब इस्तेमाल नहीं किया जा सकता. (b/127971835)
  • FragmentActivity के getThemedContext() को हटा दिया गया है. (aosp/934078)

गड़बड़ियां ठीक की गईं

  • 1.1.0-alpha05 वर्शन में हुई एक समस्या को ठीक किया गया है. इस समस्या की वजह से, स्क्रीन पर आने वाला फ़्रैगमेंट फ़्लैश होता था. (b/129405432)
  • उस समस्या को ठीक कर दिया गया है जिसमें popBackStack+replace+popBackStack कार्रवाइयों की सीरीज़ के बाद, प्राइमरी नेविगेशन फ़्रैगमेंट गायब हो जाता था. (b/124332597)
  • फ़्रैगमेंट की स्थिति को पहले जैसा करते समय, आपकी गतिविधि पर @ContentView कंस्ट्रक्टर का इस्तेमाल करने से जुड़ी समस्या को ठीक किया गया है. (b/127313094)
  • setTargetFragment() के लॉजिक में सुधार किया गया है. यह सुधार, मौजूदा टारगेट फ़्रैगमेंट को ऐसे फ़्रैगमेंट से बदलने के दौरान किया गया है जो अब तक FragmentManager से अटैच नहीं किया गया है. (aosp/932156)

वर्शन 1.1.0-alpha05

13 मार्च, 2019

androidx.fragment:fragment:1.1.0-alpha05, androidx.fragment:fragment-ktx:1.1.0-alpha05, और androidx.fragment:fragment-testing:1.1.0-alpha05 रिलीज़ किए गए हैं. इस वर्शन में शामिल सभी बदलाव की पूरी सूची यहां देखी जा सकती है.

नई सुविधाएं

  • @ContentView एनोटेशन लुकअप अब कैश मेमोरी में सेव किए जाते हैं (b/123709449)

व्यवहार में बदलाव

  • अब किसी दूसरे FragmentManager से जुड़े फ़्रैगमेंट के साथ remove(), hide(), show(), detach(), और setPrimaryNavigationFragment() को कॉल करने पर, चुपचाप फ़ेल होने के बजाय IllegalStateException दिखता है (aosp/904301)

गड़बड़ियां ठीक की गईं

  • onNewIntent के लिए FragmentActivity को अब @CallSuper (b/124120586) के तौर पर सही तरीके से मार्क किया गया है
  • उस समस्या को ठीक किया गया है जिसमें getDialog().dismiss() या getDialog().cancel() का इस्तेमाल करते समय, DialogFragment के onDismiss() को दो बार कॉल किया जा सकता था (b/126563750)

वर्शन 1.1.0-alpha04

7 फ़रवरी, 2019

androidx.fragment:fragment 1.1.0-alpha04, androidx.fragment:fragment-ktx 1.1.0-alpha04, और androidx.fragment:fragment-testing 1.1.0-alpha04 रिलीज़ किए गए हैं.

नई सुविधाएं

  • @ContentView क्लास एनोटेशन के लिए सहायता जोड़ी गई है. इससे यह पता चलता है कि onCreateView() को बदलने के बजाय, किस लेआउट एक्सएमएल फ़ाइल को बढ़ाया जाना चाहिए. हमारा सुझाव है कि आप onViewCreated() में जाकर, इससे जुड़ा काम देखें. (aosp/837619)
  • fragment-testing अब androidx.test:core-ktx 1.1.0 स्टेबल (b/121209673) पर निर्भर करता है
  • अब FragmentScenario के साथ openActionBarOverflowOrOptionsMenu का इस्तेमाल करके, फ़्रैगमेंट होस्ट किए गए विकल्प मेन्यू (b/121126668) की जांच की जा सकती है

एपीआई में हुए बदलाव

  • requireArguments() तरीका जोड़ा गया है. यह @NonNull Bundle दिखाता है या IllegalStateException (b/121196360) दिखाता है
  • यह नोट जोड़ा गया है कि getLifecycle(), getViewLifecycleOwner(), और getViewLifecycleOwnerLiveData() को बदला नहीं जाना चाहिए. साथ ही, आने वाले समय में रिलीज़ होने वाले वर्शन में इन्हें फ़ाइनल कर दिया जाएगा. अगर फ़िलहाल इस तरीके को बदला जा रहा है, तो कृपया सुविधा का अनुरोध सबमिट करें. (aosp/880714)
  • यह नोट जोड़ा गया है कि getViewModelStore() को बदला नहीं जाना चाहिए. इसे आने वाले समय में रिलीज़ होने वाले वर्शन में फ़ाइनल कर दिया जाएगा. अगर फ़िलहाल इस तरीके को बदला जा रहा है, तो कृपया सुविधा का अनुरोध सबमिट करें. (aosp/880713)
  • Fragments की पिछली रिलीज़ के साथ बाइनरी कंपैटिबिलिटी से जुड़ी समस्या ठीक की गई. (aosp/887877) (aosp/889834)

गड़बड़ियां ठीक की गईं

  • null को setTargetFragment() पर पास करने पर, टारगेट फ़्रैगमेंट सही तरीके से हटा दिए जाते हैं. (aosp/849969)
  • उस समस्या को ठीक किया गया है जिसमें टारगेट फ़्रैगमेंट, कभी-कभी onDestroy() में या उसके बाद उपलब्ध नहीं होते थे. (b/122312935)
  • DialogFragment के onDismiss() को अब onDestroy() से पहले कॉल किया जाता है. (aosp/874133) (aosp/890734)

वर्शन 1.1.0-alpha03

17 दिसंबर, 2018

नई सुविधाएं

  • Fragment अब BundleSavedStateRegistryOwner को लागू करता है और हाल ही में रिलीज़ हुई SavedState लाइब्रेरी [aosp/824380] पर निर्भर करता है
  • by activityViewModels Kotlin प्रॉपर्टी डेलिगेट को जोड़ा गया है, ताकि कंटेनिंग ऐक्टिविटी से जुड़े ViewModels को वापस पाया जा सके [b/119050253]
  • by viewModels Kotlin प्रॉपर्टी डेलिगेट को बड़ा कर दिया गया है, ताकि ViewModelStoreOwner पाने के लिए वैकल्पिक लैम्डा तरीका अपनाया जा सके. इससे, पैरंट फ़्रैगमेंट या अन्य कस्टम ViewModelStoreOwner को val viewModel: MyViewModel by viewModels(::requireParentFragment) जैसे कोड के साथ पास किया जा सकता है [b/119050253]

एपीआई में हुए बदलाव

  • FragmentScenario की मदद से, अब Theme.AppCompat [b/119054431] जैसी थीम तय की जा सकती है. यह एक ऐसा बदलाव है जिससे मौजूदा सिस्टम पर असर पड़ सकता है.
  • requireView() मेथड जोड़ा गया है. यह @NonNull View दिखाता है या IllegalStateException दिखाता है [b/120241368]
  • requireParentFragment() मेथड जोड़ा गया है. यह @NonNull Fragment दिखाता है या IllegalStateException दिखाता है [b/112103783]

गड़बड़ियां ठीक की गईं

  • IllegalStateException को ठीक किया गया: Failure saving state b/120814739
  • सेव किए गए इंस्टेंस की स्थिति से वापस लाए जा रहे फ़्रैगमेंट को अब हमेशा शून्य नहीं होगा, बल्कि Bundle मिलेगा [b/119794496]
  • हटाए गए फ़्रैगमेंट को फिर से जोड़ने पर, वे अब अपने Lifecycle ऑब्जेक्ट का फिर से इस्तेमाल नहीं करते [b/118880674]

वर्शन 1.1.0-alpha02

3 दिसंबर, 2018

नई सुविधाएं

  • FragmentScenario के Kotlin एक्सटेंशन की मदद से, अब FragmentFactory इंस्टेंस पास करने के बजाय, फ़्रैगमेंट बनाने के लिए लैम्डा का इस्तेमाल किया जा सकता है. (aosp/812913)

गड़बड़ियां ठीक की गईं

  • बैक स्टैक पर नेस्ट किए गए फ़्रैगमेंट का इस्तेमाल करते समय, IllegalStateException को ठीक किया गया (b/119256498)
  • FragmentFactory के साथ FragmentScenario.recreate() का इस्तेमाल करने पर, ऐप्लिकेशन के क्रैश होने की समस्या ठीक की गई (aosp/820540)
  • उस समस्या को ठीक किया गया है जिसकी वजह से फ़्रैगमेंट हटाने के बाद, टारगेट फ़्रैगमेंट ऐक्सेस नहीं किए जा सकते थे (aosp/807634)

वर्शन 1.1.0-alpha01

5 नवंबर, 2018

यह fragment-testing आर्टफ़ैक्ट और FragmentScenario का पहला वर्शन है. यह androidx.test:core API पर आधारित है. ज़्यादा जानकारी के लिए, फ़्रैगमेंट टेस्टिंग का दस्तावेज़ देखें.

नई सुविधाएं

  • FragmentScenario क्लास का नया वर्शन. इसका इस्तेमाल, अलग-अलग फ़्रैगमेंट की जांच करने के लिए किया जाता है.
  • अब किसी भी FragmentManager पर FragmentFactory सेट किया जा सकता है. इससे यह कंट्रोल किया जा सकेगा कि नए Fragment इंस्टेंस कैसे इंस्टैंशिएट किए जाते हैं.
  • किसी फ़्रैगमेंट से ViewModels को वापस पाने के लिए, नया by viewModels() Kotlin प्रॉपर्टी डेलिगेट जोड़ा गया.
  • इनपुट इवेंट (जैसे कि क्लिक) के पूरे न होने पर, अब उन्हें फ़्रैगमेंट के onStop() में रद्द कर दिया जाता है.

एपीआई में हुए बदलाव

  • Fragment API के पूरे सरफेस पर, nullability एनोटेशन को काफ़ी हद तक बढ़ाया गया है.

गड़बड़ियां ठीक की गईं

  • उस समस्या को ठीक किया गया है जिसकी वजह से LiveData में फ़्रैगमेंट ऑपरेशन पूरे नहीं हो पाते थे (b/77944637)

सामान्य समस्याएं

  • किसी फ़्रैगमेंट को FragmentManager से हटाने के बाद, टारगेट फ़्रैगमेंट को ऐक्सेस नहीं किया जा सकता.
  • fragment-testing, सही androidx.test:core:1.0.0 के बजाय androidx.test:core:1.0.0-beta01 पर निर्भर करता है.