फ़्रैगमेंट

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

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

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

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

ग्रूवी

dependencies {
    def fragment_version = "1.8.9"

    // 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.8.9"

    // 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.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 अब उन मामलों को ठीक से हैंडल करता है जहां पैरंट फ़्रैगमेंट को फ़्रैगमेंट बैक स्टैक पर रखा जाता है. इससे उस फ़्रैगमेंट पर वापस जाने पर, 'No view found for id' से जुड़ी समस्याएं नहीं होती हैं. (I94608)
  • FragmentTransaction.add तरीके से जोड़े गए फ़्रैगमेंट, अब ViewGroup लेने के बाद onContainerAvailable तक इंतज़ार करते हैं. इसके बाद, वे onStart() पर जाते हैं. इससे उस एपीआई का इस्तेमाल करने वाले लोगों पर असर पड़ता है. जैसे, AndroidFragment. अब AndroidFragment, onStart() के ज़रिए इसे आगे बढ़ाने से पहले, AndroidFragment के फिर से कंपोज़िशन में शामिल होने का इंतज़ार करता है. (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: अब अनुमानित बैक नेविगेशन की सुविधा सिर्फ़ उन लेन-देन के लिए काम करेगी जिनमें सभी फ़्रैगमेंट में Animator या Seekable Androidx Transition मौजूद है. इससे उस समस्या को ठीक किया गया है जिसमें कुछ हद तक आगे-पीछे किए जा सकने वाले लेन-देन को रद्द करने पर, काली स्क्रीन दिखती थी. (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 Transition मौजूद है. इससे उस समस्या को ठीक किया गया है जिसमें आंशिक रूप से खोजे जा सकने वाले लेन-देन को रद्द करने पर, स्क्रीन खाली हो जाती थी. (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 Artifact

एक नया 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 में ये कमिट शामिल हैं.

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

वर्शन 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 में ये कमिट शामिल हैं.

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

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

वर्शन 1.7.0-alpha09

24 जनवरी, 2024

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

Fragment Compose Artifact

एक नया 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 नहीं जोड़ा गया है, तो Fragments, 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 ट्रांज़िशन के साथ पिछले फ़्रैगमेंट पर जाने के लिए, बैक जेस्चर का इस्तेमाल किया जा सकता है. इस सुविधा को चालू करने के लिए, आपको ट्रांज़िशन 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 के फ़्रैगमेंट के इन्फ़्लेट होने पर, अब इसकी स्थितियां FragmentManager, होस्ट, और आईडी को onInflate कॉलबैक में ऐक्सेस किया जा सकता है. (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)

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

  • अब फ़्रैगमेंट, ऐक्टिविटी 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 के बाद हुए अहम बदलाव

  • Fragment के सेव किए गए स्टेट को पूरी तरह से दो हिस्सों में बांट दिया गया है: पहला, निजी लाइब्रेरी स्टेट (कस्टम Parcelable क्लास) और दूसरा, डेवलपर की ओर से उपलब्ध कराया गया स्टेट. यह स्टेट अब हमेशा Bundle में सेव किया जाता है. इससे यह पता लगाया जा सकता है कि फ़्रैगमेंट का स्टेट कहां से आ रहा है.
  • FragmentManager.OnBackStackChangedListener इंटरफ़ेस को बड़ा किया गया है. इसमें onBackStackChangeStarted और onBackStackChangeCommitted के दो और कॉलबैक जोड़े गए हैं. इन्हें हर Fragment के साथ कॉल किया जाता है. ऐसा तब होता है, जब उन्हें फ़्रैगमेंट बैक स्टैक में जोड़ा/हटाया जाता है और लेन-देन पूरा होने के तुरंत बाद.
  • FragmentStrictMode ने एक नया WrongNestedHierarchyViolation जोड़ा है. यह तब पता लगाता है, जब कोई चाइल्ड फ़्रैगमेंट अपने पेरेंट की व्यू हैरारकी में नेस्ट किया गया हो, लेकिन उसे पेरेंट के childFragmentManager में न जोड़ा गया हो.
  • Fragment और FragmentManager एपीआई, Intent या IntentSender लेते हैं. अब इन्हें @NonNull के साथ सही तरीके से एनोटेट किया गया है, ताकि शून्य वैल्यू को पास होने से रोका जा सके. ऐसा इसलिए, क्योंकि शून्य वैल्यू हमेशा उन Android फ़्रेमवर्क एपीआई को तुरंत क्रैश कर देती है जिन्हें ये तरीके कॉल करते हैं.
  • DialogFragment अब requireComponentDialog() एपीआई के ज़रिए, 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() एपीआई के ज़रिए, 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)

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

  • फ़्रैगमेंट अब SavedStateRegistry से पहले की अपनी onAttach() स्थिति को वापस लाते हैं. इससे यह पक्का होता है कि यह सभी अपवर्ड लाइफ़साइकल के तरीकों से उपलब्ध है. (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 में ये कमिट शामिल हैं.

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

  • फ़्रैगमेंट 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() से मिले डिफ़ॉल्ट डायलॉग के तौर पर Activity 1.5.0 के ज़रिए काम करता है.
  • सेव किए गए इंस्टेंस की स्थिति को फिर से व्यवस्थित करना - फ़्रैगमेंट, इंस्टेंस की स्थिति को सेव करने के तरीके में बदलाव करने लगे हैं. इससे यह साफ़ तौर पर पता लगाने में मदद मिलती है कि फ़्रैगमेंट में कौनसी स्थिति सेव की गई है और स्थिति का सोर्स क्या है. मौजूदा बदलावों में ये शामिल हैं:
    • FragmentManager अब अपने सेव किए गए इंस्टेंस की स्थिति को सीधे कस्टम Parcelable में सेव करने के बजाय, Bundle में सेव करता है.
    • Fragment Result APIs के ज़रिए सेट किए गए ऐसे नतीजे जिन्हें अब तक डिलीवर नहीं किया गया है उन्हें अब FragmentManager की इंटरनल स्थिति से अलग सेव किया जाता है.
    • अब हर फ़्रैगमेंट से जुड़ी स्थिति को FragmentManager की इंटरनल स्थिति से अलग सेव किया जाता है. इससे, किसी फ़्रैगमेंट से जुड़ी सेव की गई स्थिति की मात्रा को Fragment की डीबग लॉगिंग में मौजूद यूनीक आईडी से जोड़ा जा सकता है.

अन्य बदलाव

  • FragmentStrictMode अब तीसरे पक्ष के निजी फ़्रैगमेंट को, क्लास के नाम के साथ allowViolation() का इस्तेमाल करके, उल्लंघन से जुड़ी कुछ खास पाबंदियों को बायपास करने की सुविधा देता है.
  • आपकी गतिविधि के ActionBar को मेन्यू उपलब्ध कराने वाले फ़्रैगमेंट एपीआई अब काम नहीं करते. गतिविधि 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 में ये कमिट शामिल हैं.

सेव किए गए इंस्टेंस की स्थिति को फिर से व्यवस्थित करना

  • अब हर फ़्रैगमेंट से जुड़ी स्थिति को 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 तुरंत खारिज नहीं होगा. इससे सिर्फ़ Dialog की स्थिति को सिंक्रोनस तरीके से अपडेट किया जाएगा.FragmentManager (I15c36, b/72644830)

सेव किए गए इंस्टेंस की स्थिति को फिर से व्यवस्थित करना

  • FragmentManager अब अपने सेव किए गए इंस्टेंस की स्थिति को सीधे कस्टम Parcelable में सेव करने के बजाय, Bundle में सेव करता है. यह इस बारे में ज़्यादा जानकारी देने की दिशा में पहला कदम है कि फ़्रैगमेंट में क्या सेव किया जा रहा है. (I93807, b/207158202)
  • Fragment Result APIs के ज़रिए सेट किए गए ऐसे नतीजे जिन्हें अब तक डिलीवर नहीं किया गया है उन्हें अब 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 को मेन्यू उपलब्ध कराने के लिए, फ़्रैगमेंट एपीआई का इस्तेमाल बंद कर दिया गया है. ऐसा इसलिए, क्योंकि ये एपीआई आपके फ़्रैगमेंट को आपकी गतिविधि से जोड़ते हैं और इन्हें अलग से टेस्ट नहीं किया जा सकता. गतिविधि 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)

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

  • Fragment 1.4.1 से: FragmentContainerView अब एक्सएमएल से जनरेट किए गए व्यू आईडी की वैल्यू नेगेटिव होने पर, अवैध स्थिति का अपवाद नहीं दिखाता है. (Ic185b, b/213086140)
  • फ़्रैगमेंट 1.4.1 से: by viewModels() लेज़ी फ़ंक्शन के साथ कस्टम ownerProducer लैम्डा का इस्तेमाल करने पर, अब यह हमेशा फ़्रैगमेंट के फ़ैक्ट्री का इस्तेमाल करने के बजाय, उस मालिक से defaultViewModelProviderFactory का इस्तेमाल करेगा. ऐसा तब होगा, जब कस्टम ViewModelProvider.Factory उपलब्ध न हो. (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() lazy फ़ंक्शन के साथ कस्टम ownerProducer लैम्डा का इस्तेमाल करते समय, अगर कस्टम ViewModelProvider.Factory नहीं दिया जाता है, तो यह हमेशा फ़्रैगमेंट के फ़ैक्ट्री का इस्तेमाल करने के बजाय, उस मालिक के defaultViewModelProviderFactory का इस्तेमाल करेगा. (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 के आईडी के साथ, findFragmentById() के जैसा ही लॉजिक इस्तेमाल करता है. हालांकि, इससे कॉल को चेन किया जा सकता है.

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

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

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

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

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

वर्शन 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 की बहुत लंबी लिंट चेतावनी को छोटा करके 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 में ये कमिट शामिल हैं.

Lint

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

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

  • Activity Result API के ज़रिए मैनेज किए जाने वाले एपीआई के लिए, बंद होने की सूचना देने वाले मैसेज में ज़्यादा जानकारी जोड़ी गई है. ये एपीआई हैं: startActivityForResult, startIntentSenderForResult, onActivityResult, requestPermissions, और onRequestPermissionsResult. (cce80f)
  • Fragment और DialogFragment, दोनों के लिए onActivityCreated() को बंद करने से जुड़ी सूचना में ज़्यादा जानकारी शामिल की गई है. (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 लिंट चेक की सुविधा को बेहतर बनाया गया है, ताकि फ़ालतू पैरंटheses को बेहतर तरीके से हैंडल किया जा सके. (I2d865)
  • UseGetLayoutInflater लिंट चेक को बेहतर बनाया गया है, ताकि ज़्यादा से ज़्यादा मुश्किल मामलों को हैंडल किया जा सके. (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 में ये कमिट शामिल हैं.

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

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

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

  • फ़्रैगमेंट 1.3.5 से: aosp/1679887 में, फ़्रैगमेंट 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 के आईडी के साथ, findFragmentById() के जैसा ही लॉजिक इस्तेमाल करता है. हालांकि, इससे कॉल को चेन किया जा सकता है. (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(), बैक स्टैक में मौजूद सभी लेन-देन को पॉप अप कर देगा. ऐसा तब होगा, जब बैक स्टैक में तय किया गया नाम नहीं मिलता है या कोई शून्य नाम दिया जाता है. हालांकि, अगर आपने पहले addToBackStack() का इस्तेमाल करके, उसी नाम से फ़्रैगमेंट लेन-देन नहीं किया है, तो saveBackStack() कुछ नहीं करेगा.
  • उन लेन-देन से जोड़े गए सभी फ़्रैगमेंट की स्थिति सेव की जाती है. इसका मतलब है कि हर फ़्रैगमेंट का व्यू स्टेट सेव किया जाता है, हर फ़्रैगमेंट का 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(), getTargetFragment() या getTargetRequestCode() एपीआई का इस्तेमाल करने पर, यह detectTargetFragmentUsage() कुकी इसका पता लगाती है.setTargetFragment() (#139, b/153737745)

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

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

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

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

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

  • Fragment 1.3.4: Fragment 1.3.3 में हुई रिग्रेशन की समस्या को ठीक किया गया है. यह समस्या, Fragment में ViewModelProvider या Jetpack Compose के viewModel() तरीके के साथ ViewTreeViewModelStoreOwner.get() API का इस्तेमाल करते समय हुई थी. इस्तेमाल के इन उदाहरणों में अब आपके फ़्रैगमेंट से मिले 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() API का इस्तेमाल करने पर, 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 का इस्तेमाल अब तब काम करता है, जब इसे Fragment के View के साथ ViewTreeSavedStateRegistryOwner.get() का इस्तेमाल करके दिखाए गए SavedStateRegistryOwner के साथ इस्तेमाल किया जाता है. (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 पर निर्भर करता है. इससे, Fragment 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) की वजह से फ़्रैगमेंट में मेमोरी लीक होने की समस्या को ठीक किया गया है
  • अब फ़्रैगमेंट, लेन-देन दिखाने/छिपाने (I8bce8, b/180255554) के लिए onCreateOptionsMenu को सही तरीके से कॉल करते हैं
  • अब लेआउट से पहले शुरू होने वाले ट्रांज़िशन वाले चाइल्ड फ़्रैगमेंट, सही तरीके से 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 अब लाइफ़साइकल 2.3.0 और SavedState 1.1.0 में जोड़े गए ViewTreeLifecycleOwner.get(View), ViewTreeViewModelStoreOwner.get(View), और ViewTreeSavedStateRegistryOwner एपीआई के साथ काम करता है. इससे, Fragment में View का इस्तेमाल करते समय, फ़्रैगमेंट को ViewModelStoreOwner के तौर पर दिखाया जाएगा. साथ ही, फ़्रैगमेंट के व्यू लाइफ़साइकल से जुड़े SavedStateRegistryOwner और LifecycleOwner को दिखाया जाएगा.

  • 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)

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

  • Animation वाले फ़्रैगमेंट को FragmentContainerView में जोड़ते समय, लीक और विज़ुअल आर्टफ़ैक्ट की समस्या ठीक की गई. इसके बाद, पॉप ऑपरेशन से उस फ़्रैगमेंट को जोड़ा गया. (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 में बदल दिया गया है. साथ ही, FragmentScenario के लिए Kotlin 1.4 के फ़ंक्शनल इंटरफ़ेस का इस्तेमाल करके, सोर्स और बाइनरी के साथ काम करने की सुविधा को बनाए रखा गया है.FragmentAction (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 के इंटरनल स्टेट मैनेजमेंट को फिर से फ़ैक्टर किया गया है. इससे लाइफ़साइकल के तरीकों, ऐनिमेशन, और ट्रांज़िशन के डिस्पैच पर असर पड़ता है. साथ ही, इससे यह भी तय होता है कि स्थगित किए गए लेन-देन को कैसे हैंडल किया जाता है. यह सुविधा डिफ़ॉल्ट रूप से चालू रहती है. ज़्यादा जानकारी के लिए, Fragments: Rebuilding the Internals ब्लॉग पोस्ट देखें. (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)
  • अब registerForActivityResult() को कॉल करने के बाद registerForActivityResult() को कॉल करने पर, एक अपवाद दिखता है. इससे पता चलता है कि इसकी अनुमति नहीं है. कॉन्फ़िगरेशन में बदलाव करने के बाद, नतीजे नहीं दिखाने के बजाय यह अपवाद दिखता है.onCreate() (b/162255449)
  • FragmentActivity अब OnContextAvailableListener की स्थिति को वापस लाने के लिए, गतिविधि 1.2.0-alpha08 में पेश किए गए OnContextAvailableListener एपीआई का इस्तेमाल करता है.FragmentManager FragmentActivity की सबक्लास में जोड़े गए सभी लिसनर, इस लिसनर के बाद चलेंगे. (I513da)

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

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

आम समस्या

  • नए स्टेट मैनेजर का इस्तेमाल करते समय, onViewCreated() के बाद और onResume() से पहले फ़्रैगमेंट के रूट व्यू की दृश्यता को सीधे तौर पर सेट करने से, सेट की गई दृश्यता को FragmentManager बदल देता है. 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 Lint check, ?. और !! ऑपरेटर के चेन किए गए इस्तेमाल को सही तरीके से हैंडल नहीं करता था. (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() एपीआई अब नॉन-नल 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)
  • Fragment पर मौजूद startActivityForResult()/onActivityResult() और requestPermissions()/onRequestPermissionsResult() एपीआई बंद कर दिए गए हैं. कृपया Activity Result APIs का इस्तेमाल करें. (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)
  • Fragment 1.2.4: Fragment ProGuard के नियमों को अपडेट किया गया है, ताकि रखे गए फ़्रैगमेंट्स को अस्पष्ट किया जा सके. (b/151605338)
  • Fragment 1.2.4: DialogFragment क्लास पर FragmentLiveDataObserve Lint नियम बंद कर दिया गया है, क्योंकि इनका लाइफ़साइकल और व्यू लाइफ़साइकल हमेशा सिंक होता है. इसलिए, 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 में ये कमिट शामिल हैं.

नई सुविधाएं

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

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

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

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

  • फ़्रैगमेंट 1.2.3: DialogFragment में मौजूद एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, onCreateDialog() से getLayoutInflater() को कॉल करने पर StackOverflowError होता था. (b/117894767, aosp/1258664)
  • Fragment 1.2.3: Fragment में शामिल ProGuard नियमों का दायरा कम किया गया है, ताकि यह पक्का किया जा सके कि इस्तेमाल न की गई Fragment क्लास को हटाया जा सके. (b/149665169)
  • फ़्रैगमेंट 1.2.3 से: Kotlin प्रॉपर्टी के नाम को शैडो करने वाले लोकल वैरिएबल के नाम का इस्तेमाल करते समय, UseRequireInsteadOfGet लिंट चेक में फ़ॉल्स पॉज़िटिव की समस्या ठीक की गई. (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 में ये कमिट शामिल हैं.

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

  • Lint, onCreateView(), onViewCreated(), और onActivityCreated() में OnBackPressedDispatcher को कॉल करने के लिए, LifecycleOwner के तौर पर viewLifecycleOwner का इस्तेमाल करने का सुझाव देता है. (b/142117657)
  • नया Lint चेक जोड़ा गया है. इससे यह पुष्टि होती है कि 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)
  • FragmentStatePagerAdapter और FragmentPagerAdapter, अब finishUpdate() को चलाने पर FragmentManager से मिले अपवादों को नहीं पकड़ते. (aosp/1208711)
  • उस समस्या को ठीक किया गया है जिसकी वजह से FragmentManager.findFragment(), <fragment> टैग के ज़रिए जोड़े गए फ़्रैगमेंट के साथ काम नहीं करता था. (b/147784323)
  • <fragment> टैग का इस्तेमाल करके बढ़ाए गए फ़्रैगमेंट को अब लेआउट में होने पर, हमेशा onCreate() से पहले onInflate() पर कॉल मिलता है. (aosp/1215856)
  • जब गतिविधि पहले ही खत्म हो चुकी हो, तब FragmentManager इंस्टेंस पर Calling toString() अब NullPointerException नहीं दिखाता है. (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 में जोड़ा गया है.
  • लाइफ़साइकल ViewModel SavedState इंटिग्रेशन: SavedStateViewModelFactory अब डिफ़ॉल्ट फ़ैक्ट्री है. इसका इस्तेमाल by viewModels(), by activityViewModels(), ViewModelProvider कंस्ट्रक्टर या फ़्रैगमेंट के साथ ViewModelProviders.of() का इस्तेमाल करते समय किया जाता है.
  • लिंट की नई जांच: लिंट की एक नई जांच जोड़ी गई है. इससे यह पक्का किया जा सकेगा कि onCreateView(), onViewCreated() या onActivityCreated() से LiveData को मॉनिटर करते समय, getViewLifecycleOwner() का इस्तेमाल किया जा रहा हो.
  • getFragmentManager() बंद होना: Fragment पर मौजूद getFragmentManager() और requireFragmentManager() तरीकों को बंद कर दिया गया है. इनकी जगह getParentFragmentManager() तरीके का इस्तेमाल किया जा सकता है. यह तरीका, Fragment को जोड़े गए नॉन-शून्य FragmentManager को दिखाता है. isAdded() का इस्तेमाल करके यह पता लगाया जा सकता है कि इसे कॉल करना सुरक्षित है या नहीं.
  • FragmentManager.enableDebugLogging() बंद होना: स्टैटिक FragmentManager.enableDebugLogging तरीका बंद हो गया है. FragmentManager अब टैग FragmentManager के लिए Log.isLoggable() का पालन करता है. इससे आपको अपने ऐप्लिकेशन को फिर से कंपाइल किए बिना, DEBUG या VERBOSE लॉगिंग को चालू करने की सुविधा मिलती है.

ऐसी समस्याएं जिनके बारे में जानकारी पहले से है

  • सिर्फ़ class या android:name एट्रिब्यूट के ज़रिए FragmentContainerView पर रेफ़र किए गए फ़्रैगमेंट को 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> टैग का इस्तेमाल करते समय, फ़्रैगमेंट 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)

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

  • अब फ़्रैगमेंट, Lifecycle 2.2.0-rc03, Lifecycle ViewModel SavedState 1.0.0-rc03, और Activity 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 (Fragment 1.2.0-rc01 में पेश किया गया) अब getViewLifecycleOwner() के बजाय Kotlin प्रॉपर्टी ऐक्सेस सिंटैक्स viewLifecycleOwner का इस्तेमाल करता है. (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)
  • एक नई लिंट जांच जोड़ी गई है. इससे यह पक्का किया जाता है कि 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)

ऐसी समस्याएं जिनके बारे में जानकारी पहले से है

  • सिर्फ़ class या android:name एट्रिब्यूट के ज़रिए FragmentContainerView पर रेफ़र किए गए फ़्रैगमेंट को 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 में ये कमिट शामिल हैं.

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

  • उस समस्या को ठीक किया गया है जिसमें Fragment के 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 की अन्य कार्रवाइयां की जा सकती हैं. साथ ही, लेआउट के लिए View Binding का इस्तेमाल किया जा सकता है. (b/139830628, b/141177981)
  • Fragments में अब Lint की चेतावनी शामिल है. इससे <fragment> को FragmentContainerView से बदलने का सुझाव मिलता है. (b/139830056)

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

  • androidx.transition का इस्तेमाल करते समय, ClassCastException से जुड़ी समस्या ठीक की गई. (b/140680619)
  • ट्रांज़िशन 1.3.0-beta01 का इस्तेमाल करने पर, फ़्रैगमेंट अब androidx.transition ट्रांज़िशन के पूरा होने का इंतज़ार करते हैं. इसके अलावा, फ़्रेमवर्क ट्रांज़िशन और ऐनिमेशन के पूरा होने का इंतज़ार भी करते हैं. इन दोनों को फ़्रैगमेंट 1.2.0-alpha03 और फ़्रैगमेंट 1.2.0-alpha02 में ठीक किया गया था. इसके बाद ही, onDestroyView() को भेजा जाता है. (aosp/1119841)
  • ट्रांज़िशन 1.3.0-beta01 का इस्तेमाल करते समय, फ़्रैगमेंट अब एक ही कंटेनर पर नए ट्रांज़िशन / ऐनिमेशन शुरू करने से पहले, androidx.transition ट्रांज़िशन को सही तरीके से रद्द कर देते हैं. (aosp/1119841)
  • एपीआई 17 और इससे पहले के वर्शन में, FragmentContainerView का इस्तेमाल करते समय, अपने फ़्रैगमेंट के रूट व्यू पर 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 रिलीज़ हो गया है. इस वर्शन में शामिल कमिट यहां देखे जा सकते हैं.

नई सुविधाएं

  • by viewModels(), by activityViewModels(), ViewModelProvider कंस्ट्रक्टर या Fragment के साथ ViewModelProviders.of() का इस्तेमाल करते समय, अब SavedStateViewModelFactory का इस्तेमाल डिफ़ॉल्ट फ़ैक्ट्री के तौर पर किया जाता है. (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) तरीका जोड़ा गया. fragment-ktx में Kotlin एक्सटेंशन भी उपलब्ध है. (aosp/1090757)
  • FragmentTransaction पर add() और replace() के नए ओवरलोड जोड़े गए हैं. ये Class<? extends Fragment> और आर्ग्युमेंट के वैकल्पिक Bundle लेते हैं. ये तरीके, जोड़ने के लिए Fragment का इंस्टेंस बनाने के लिए, आपके FragmentFactory का इस्तेमाल करते हैं. fragment-ktx में, Kotlin एक्सटेंशन भी जोड़े गए हैं.ये एक्सटेंशन, रीफ़ाइड टाइप (यानी कि fragmentTransaction.replace<YourFragment>(R.id.container)) का इस्तेमाल करते हैं. (b/126124987)
  • Fragment लाइफ़साइकल कॉलबैक में @MainThread एनोटेशन जोड़े गए हैं. (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)
  • उन समस्याओं को ठीक किया गया है जिनमें फ़्रैगमेंट लाइफ़साइकल के साथ जोड़े गए OnBackPressedCallback को तब कॉल नहीं किया जाता था, जब FragmentManager में बैक स्टैक होता था. ज़्यादा जानकारी के लिए, 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)
  • जब किसी मौजूदा टारगेट फ़्रैगमेंट को ऐसे फ़्रैगमेंट से बदला जाता है जो अब तक FragmentManager से अटैच नहीं हुआ है, तब setTargetFragment() के लॉजिक को ठीक किया गया है. (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)

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

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

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

  • FragmentActivity के लिए onNewIntent को अब @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

नई सुविधाएं

  • फ़्रैगमेंट अब 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 को ठीक किया गया: स्थिति को सेव नहीं किया जा सका 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 पर निर्भर करता है.