फ़्रैगमेंट

अपने ऐप्लिकेशन को कई अलग-अलग स्क्रीन में बांटें, जिन्हें किसी ऐक्टिविटी में होस्ट किया जाता है.
नया अपडेट रिलीज़ किया गया जांचा और परखा हुआ वर्शन रिलीज़ कैंडिडेट बीटा रिलीज़ ऐल्फ़ा रिलीज़
12 फ़रवरी, 2025 1.8.6 - - -

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

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

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

ग्रूवी

dependencies {
    def fragment_version = "1.8.3"

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

    // 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 को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या इस लाइब्रेरी को बेहतर बनाने के लिए आपके पास कोई सुझाव है, तो हमें बताएं. नई लाइब्रेरी बनाने से पहले, कृपया इस लाइब्रेरी में मौजूद मौजूदा समस्याओं पर एक नज़र डालें. किसी मौजूदा समस्या पर अपना वोट जोड़ने के लिए, स्टार बटन पर क्लिक करें.

नई समस्या बनाना

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

वर्शन 1.8

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

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

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

वर्शन 1.8.4

2 अक्टूबर, 2024

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

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

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

वर्शन 1.8.3

4 सितंबर, 2024

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

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

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

वर्शन 1.8.2

24 जुलाई, 2024

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

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

  • AndroidFragment अब उन मामलों को ठीक से मैनेज करता है जहां पैरंट फ़्रैगमेंट को फ़्रैगमेंट बैक स्टैक पर रखा जाता है. इससे, उस फ़्रैगमेंट पर वापस पॉप होने पर, 'आईडी के लिए कोई व्यू नहीं मिला' वाली समस्याओं से बचा जा सकता है. (I94608)
  • FragmentTransaction.add तरीके से जोड़े गए फ़्रैगमेंट, ViewGroup में बदलने के बाद onStart() में बदलने से पहले onContainerAvailable में बदल जाते हैं. इससे उस एपीआई के उपयोगकर्ताओं पर असर पड़ता है, जैसे कि AndroidFragment. अब AndroidFragment, onStart() पर ले जाने से पहले, 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 से: अनुमानित बैक ट्रांज़िशन की सुविधा अब सिर्फ़ उन लेन-देन के लिए काम करेगी जिनमें सभी फ़्रैगमेंट में ऐनिमेशन या Androidx ट्रांज़िशन (जिसमें आगे-पीछे किया जा सकता है) हो. इससे, उस समस्या को ठीक किया गया है जिसमें कुछ हिस्से तक आगे-पीछे किया जा सकने वाले लेन-देन को रद्द करने पर, काली स्क्रीन दिखती थी. (I43037, b/339169168)

वर्शन 1.8.0-alpha02

17 अप्रैल, 2024

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

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

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

वर्शन 1.8.0-alpha01

3 अप्रैल, 2024

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

नई सुविधाएं

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

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

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

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

वर्शन 1.7

वर्शन 1.7.1

14 मई, 2024

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

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

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

वर्शन 1.7.0

1 मई, 2024

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

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

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

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

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

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

एक नया fragment-compose आर्टफ़ैक्ट बनाया गया है, जो फ़्रैगमेंट पर आधारित आर्किटेक्चर से पूरी तरह 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)
  • फ़्रैगमेंट में एक समस्या को ठीक किया गया है. इसमें, अनुमानित बैक जेस्चर की मदद से आने वाले ट्रांज़िशन में रुकावट डालने पर, आने वाले व्यू को हटा दिया जाता था और खाली स्क्रीन दिखती थी. (Id3f22, b/319531491)

वर्शन 1.7.0-alpha10

7 फ़रवरी, 2024

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

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

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

वर्शन 1.7.0-alpha09

24 जनवरी, 2024

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

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

एक नया fragment-compose आर्टफ़ैक्ट बनाया गया है, जो फ़्रैगमेंट पर आधारित आर्किटेक्चर से पूरी तरह 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 ट्रांज़िशन के लिए, फ़्रैगमेंट की अनुमानित बैक सपोर्ट का इस्तेमाल करते समय, अगर addOnBackStackChangedListener के ज़रिए कोई FragmentManager.OnBackStackChangedListener कभी नहीं जोड़ा गया है, तो फ़्रैगमेंट handleOnBackProgressed से NullPointerException दिखाएगा. मैन्युअल तरीके से किसी लिसनर को जोड़ने पर, क्रैश की समस्या हल हो जाएगी. फ़्रैगमेंट के अगले वर्शन में, इस समस्या को ठीक कर दिया जाएगा.

वर्शन 1.7.0-alpha08

10 जनवरी, 2024

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

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

  • ट्रांज़िशन लाइब्रेरी के लिए, गड़बड़ी को ठीक करने का तरीका हटा दिया गया है. इसे ट्रांज़िशन 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 के फ़्रैगमेंट को इनफ्लेट किया जाता है, तो onInflate कॉलबैक में FragmentManager, होस्ट, और आईडी जैसी स्थितियां ऐक्सेस की जा सकती हैं. (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 वर्शन में ये बदलाव शामिल हैं.

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

  • फ़्रैगमेंट को अपडेट किया गया है, ताकि वे ट्रांज़िशन 1.5.0-alpha04 में जोड़े गए नए animateToStart एपीआई पर निर्भर कर सकें.

वर्शन 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). अगर आपको यह समस्या दिखती है, तो कृपया फ़्रैगमेंट के ख़िलाफ़ समस्या दर्ज करें. इसके लिए, एक सैंपल प्रोजेक्ट दें जिसमें आपकी समस्या दिख रही हो. गतिविधि के 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 वर्शन में ये बदलाव शामिल हैं.

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

  • एपीआई 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)

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

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

वर्शन 1.6.0

7 जून, 2023

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

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

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

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

  • फ़्रैगमेंट 1.5.6 से: एक समस्या को ठीक किया गया है. इसमें, setFragmentResultListener में clearFragmentResultListener को कॉल करने पर, Lifecycle पहले से STARTED होने और नतीजा पहले से उपलब्ध होने पर, यह काम नहीं करता था. (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)

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

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

वर्शन 1.6.0-alpha04

7 दिसंबर, 2022

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

नई सुविधाएं

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

ऐप्लिकेशन के काम करने के तरीके में बदलाव

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

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

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

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

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

  • फ़्रैगमेंट 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 वर्शन में ये बदलाव शामिल हैं.

ऐप्लिकेशन के काम करने के तरीके में बदलाव

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

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

  • फ़्रैगमेंट 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)
  • एक समस्या को ठीक किया गया है. इसमें, setFragmentResultListener में clearFragmentResultListener को कॉल करने पर, Lifecycle पहले से STARTED हो जाता था और नतीजा पहले से उपलब्ध हो जाता था. (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)

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

वर्शन 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 अब लाइफ़साइकल 2.5.0 के CreationExtras की मदद से, स्टेटलेस ViewModelProvider.Factory उपलब्ध करा सकता है.
  • कॉम्पोनेंट डायलॉग इंटिग्रेशन - DialogFragment अब onCreateDialog() से दिखाए गए डिफ़ॉल्ट डायलॉग के तौर पर, गतिविधि 1.5.0 के ज़रिए ComponentDialog का इस्तेमाल करता है.
  • सेव किए गए इंस्टेंस स्टेटस को फिर से तैयार करना - फ़्रैगमेंट, अपने इंस्टेंस स्टेटस को सेव करने के तरीके में बदलाव कर रहे हैं. इससे यह साफ़ तौर पर पता चलता है कि फ़्रैगमेंट में कौनसी स्थिति सेव की गई है और स्थिति का सोर्स क्या है. मौजूदा बदलावों में ये शामिल हैं:
    • 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 तुरंत खारिज नहीं होगा. यह सिर्फ़ 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() का इस्तेमाल नहीं किया जा सकता. मेन्यू और उनके मेन्यू आइटम को मैनेज करने के लिए, फ़्रैगमेंट 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 अब onCreateDialog() से मिले डिफ़ॉल्ट डायलॉग के तौर पर, ComponentDialog का इस्तेमाल करता है. (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 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

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

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

वर्शन 1.4

वर्शन 1.4.1

26 जनवरी, 2022

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

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

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

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

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

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

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

वर्शन 1.4.0-rc01

3 नवंबर, 2021

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

वर्शन 1.4.0-beta01

27 अक्टूबर, 2021

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

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

  • पैरंट फ़्रैगमेंट अब अपना कॉलबैक लॉन्च करने से पहले, अपनी पूरी हैरारकी में onHiddenChanged() को डिस्पैच करेंगे. (Iedc20, b/77504618)
  • अब जब खुले कीबोर्ड वाले फ़्रैगमेंट से रीसाइकलर व्यू वाले फ़्रैगमेंट पर स्विच किया जाएगा, तो कीबोर्ड अपने-आप बंद हो जाएगा. (I8b842, b/196852211)
  • DialogFragment अब show(), showNow() या dismiss() को कॉल करने पर, DialogFragment के ज़रिए किए गए सभी लेन-देन के लिए 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 APIs, जैसे कि 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 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

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

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

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

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

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

वर्शन 1.4.0-alpha08

1 सितंबर, 2021

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

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

  • UseRequireInsteadOfGet Lint की जांच को बेहतर बनाया गया है, ताकि ग़ैर-ज़रूरी ब्रैकेट को बेहतर तरीके से हैंडल किया जा सके. (I2d865)
  • UseGetLayoutInflater Lint की जांच को बेहतर बनाया गया है, ताकि अन्य असामान्य स्थितियों को मैनेज किया जा सके. (Ie5423)

वर्शन 1.4.0-alpha07

18 अगस्त, 2021

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

वर्शन 1.4.0-alpha06

4 अगस्त, 2021

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

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

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

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

  • एक समस्या को ठीक किया गया है. इसमें, एक ही समय पर FragmentTransaction का इस्तेमाल करने वाले FragmentTransaction को चलाने के दौरान, कई बैकस्टैक के साथ काम करने के लिए saveBackStack() को कॉल करने पर, कॉल पूरा नहीं होता था.replace() (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 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • फ़्रैगमेंट 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 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • FragmentManager की मदद से लॉगिंग की सुविधा चालू होने पर, FragmentStrictMode अब हमेशा उल्लंघनों को लॉग करेगा. भले ही, पाबंदी वाले मोड की मौजूदा नीति का इस्तेमाल किया जा रहा हो. (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)

ऐप्लिकेशन के काम करने के तरीके में बदलाव

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

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

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

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

फ़्रैगमेंट के लिए StrictMode

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

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

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

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

Lint की नई जांच

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

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

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

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

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

वर्शन 1.3.3

21 अप्रैल, 2021

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

नई सुविधाएं

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

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

  • फ़्रैगमेंट 1.3.2 में हुई एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, FragmentTransaction को पॉप अप करते समय popEnter ऐनिमेशन नहीं चलते थे. FragmentTransaction में setPrimaryNavFragment ऑपरेशन शामिल होता है, जैसे कि 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)

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

  • फ़्रैगमेंट अब Activity 1.2.2 पर निर्भर करता है. इससे, फ़्रैगमेंट 1.3.1 या उसके बाद के वर्शन का इस्तेमाल करते समय, ऐक्टिविटी की InvalidFragmentVersionForActivityResultलिंट जांच से जुड़ी समस्या ठीक हो जाती है.
  • फ़्रैगमेंट अब 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 का इस्तेमाल करने के लिए, आपको फ़्रैगमेंट 1.3.0 पर अपग्रेड करना होगा.
  • फ़्रैगमेंट के नतीजे का एपीआई: FragmentManager पर नए एपीआई की मदद से, दो फ़्रैगमेंट के बीच नतीजे भेजने की सुविधा जोड़ी गई है. यह हैरारकी फ़्रैगमेंट (पैरंट/चाइल्ड), DialogFragments, और नेविगेशन में फ़्रैगमेंट के लिए काम करता है. साथ ही, यह पक्का करता है कि नतीजे सिर्फ़ आपके फ़्रैगमेंट को तब भेजे जाएं, जब वह कम से कम STARTED हो. इन नए एपीआई के पक्ष में, टारगेट फ़्रैगमेंट एपीआई को बंद कर दिया गया है. Fragment Result API का इस्तेमाल करके नतीजे पाना देखें.

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

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

    • FragmentScenario अब moveToState() को लागू करने के लिए, setMaxLifecycle() का इस्तेमाल करता है. इससे यह पक्का होता है कि सभी एपीआई लेवल पर एक जैसा व्यवहार हो और फ़्रैगमेंट की स्थिति को उससे जुड़ी ऐक्टिविटी से अलग किया जा सके.
    • FragmentScenario में अब शुरुआती Lifecycle.State सेट करने की सुविधा है. इससे, पहली बार हर Lifecycle.State पर जाने से पहले, फ़्रैगमेंट की स्थिति की पुष्टि की जा सकती है.
    • अब onFragment के FragmentScenario एपीआई का विकल्प उपलब्ध है. यह Kotlin के रीफ़ाइड एक्सटेंशन वाले तरीके withFragment के तौर पर उपलब्ध है. इसकी मदद से, वैल्यू वापस की जा सकती है. खास तौर पर, यह दिए गए ब्लॉक में मिले अपवादों को फिर से दिखाता है.
  • ViewTree सहायता: Fragment अब लाइफ़साइकल 2.3.0 और सेव की गई स्थिति 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 में बदल दिया गया है. साथ ही, FragmentAction के लिए Kotlin 1.4 के फ़ंक्शनल इंटरफ़ेस का इस्तेमाल करके, सोर्स और बाइनरी के साथ काम करने की सुविधा को बनाए रखा गया है. (I19d31)

ऐप्लिकेशन के काम करने के तरीके में बदलाव

  • class या android:name एट्रिब्यूट का इस्तेमाल करके फ़्रैगमेंट को इन्फ़्लेट न करने वाले FragmentContainerView का इस्तेमाल, अब 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() के exit 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)
  • फ़्रैगमेंट अब Animators को Animations के मुकाबले प्राथमिकता देते हैं. इसका मतलब है कि दोनों के साथ मौजूद फ़्रैगमेंट, सिर्फ़ 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 वर्शन में ये बदलाव शामिल हैं.

नया स्टेट मैनेजर

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

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

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

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

ऐप्लिकेशन के काम करने के तरीके में बदलाव

  • अब किसी फ़्रैगमेंट के onCreate() लाइफ़साइकल मैथड में, ActivityResultLauncher पर launch() को कॉल किया जा सकता है. (b/161464278)
  • onCreate() के बाद registerForActivityResult() को कॉल करने पर, अब एक अपवाद दिखता है. इससे पता चलता है कि कॉन्फ़िगरेशन में बदलाव करने के बाद, नतीजे नहीं दिखाए जा सकते. (b/162255449)
  • FragmentActivity अब FragmentManager की स्थिति को वापस लाने के लिए, गतिविधि 1.2.0-alpha08 में पेश किए गए OnContextAvailableListener एपीआई का इस्तेमाल करता है. 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 अब फ़्रैगमेंट को हमेशा RESUMED वाली स्थिति में ले जाने के बजाय, लाइफ़साइकल की शुरुआती स्थिति को CREATED, STARTED या RESUMED पर सेट करने की सुविधा देता है. (b/159662750)
  • Kotlin के रीफ़ाइड एक्सटेंशन तरीके withFragment के तौर पर, onFragment के FragmentScenario एपीआई का विकल्प जोड़ा गया है. इसकी मदद से, वैल्यू वापस की जा सकती है. खास तौर पर, यह दिए गए ब्लॉक में मिले अपवादों को फिर से दिखाता है. (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() को अलग-अलग और जांचे जा सकने वाले लिसनर को सौंपने की अनुमति मिलती है. साथ ही, अपने सीधे चाइल्ड फ़्रैगमेंट मैनेजर के अलावा, फ़्रैगमेंट मैनेजर में लिसनर जोड़ने की सुविधा मिलती है. (I06d3d)

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

  • पैरंट फ़्रैगमेंट की व्यू स्टेटस को अब चाइल्ड फ़्रैगमेंट से पहले वापस लाया जाता है. इससे, कॉन्फ़िगरेशन में बदलाव होने के बाद, विज़ुअल ऑर्डर करने से जुड़ी समस्या ठीक हो जाती है. यह समस्या तब आती है, जब DialogFragment किसी दूसरे DialogFragment को चाइल्ड फ़्रैगमेंट के तौर पर दिखाता है. (b/157195715)
  • UseRequireInsteadOfGet Lint की जांच करने की सुविधा, ?. और !! ऑपरेटर के चेन किए गए इस्तेमाल को सही तरीके से मैनेज नहीं कर पा रही थी. इस समस्या को ठीक कर दिया गया है. (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 एक्सटेंशन, जो lambda फ़ंक्शन लेते हैं उन्हें अब 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 पर नए एपीआई की मदद से, दो फ़्रैगमेंट के बीच नतीजे पास करने की सुविधा जोड़ी गई है. यह हैरारकी फ़्रैगमेंट (पैरंट/चाइल्ड), DialogFragments, और नेविगेशन में फ़्रैगमेंट के लिए काम करता है. साथ ही, यह पक्का करता है कि नतीजे सिर्फ़ आपके फ़्रैगमेंट को तब भेजे जाएं, जब वह कम से कम STARTED हो. (b/149787344)

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

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

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

  • फ़्रैगमेंट के लाइफ़साइकल के व्यवहार को दिखाने के लिए, onSaveInstanceState() को कॉल करने से पहले फ़्रैगमेंट का getViewLifecycleOwner() बंद कर दिया जाता है. (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 का इस्तेमाल करते समय, फ़्रैगमेंट 1.3.0-alpha02 में हुई रेग्रेसन की समस्या को ठीक किया गया. (b/151652127, aosp/1263328, aosp/1265163)
  • कॉन्फ़िगरेशन में बदलाव करने के बाद, फ़्रैगमेंट से prepareCall का इस्तेमाल करते समय क्रैश होने की समस्या को ठीक किया गया. (b/152137004)
  • setTargetFragment() का इस्तेमाल करते समय, शेयर किए गए एलिमेंट और बाहर निकलने के ट्रांज़िशन को अनदेखा करने की समस्या को ठीक किया गया है. (b/152023196)
  • फ़्रैगमेंट 1.2.4 से: फ़्रैगमेंट के लिए ProGuard के नियमों को अपडेट किया गया, ताकि सेव किए गए फ़्रैगमेंट को धुंधला किया जा सके. (b/151605338)
  • फ़्रैगमेंट 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 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • गतिविधि 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)
  • फ़्रैगमेंट 1.2.3 में: फ़्रैगमेंट में शामिल ProGuard नियमों के दायरे को कम किया गया है, ताकि यह पक्का किया जा सके कि इस्तेमाल न किए गए फ़्रैगमेंट क्लास हटाए जा सकें. (b/149665169)
  • फ़्रैगमेंट 1.2.3 से: Kotlin प्रॉपर्टी के नाम को छिपाने वाले लोकल वैरिएबल के नाम का इस्तेमाल करते समय, UseRequireInsteadOfGet Lint की जांच में गलत नतीजे मिलने की समस्या को ठीक किया गया. (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)

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

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

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

  • फ़्रैगमेंट के ProGuard नियम अब सिर्फ़ उन डिफ़ॉल्ट कन्स्ट्रक्टर Fragment क्लास को सही तरीके से सेव करते हैं जिनका इस्तेमाल किया जाता है. ऐसा, फ़्रैगमेंट 1.2.1 में हुई गड़बड़ी को ठीक करने के लिए किया गया है.Fragment (b/149665169
  • फ़्रैगमेंट 1.2.2 में जोड़े गए require___() Lint नियम, अब उन लोकल वैरिएबल के लिए गलत पॉज़िटिव नहीं दिखाते जिनका नाम, शेडो की गई Kotlin प्रॉपर्टी के नाम से मेल खाता है. जैसे, view). (b/149891163)
  • Android Studio में लेआउट की झलक का इस्तेमाल करते समय, FragmentContainerView अब 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 वर्शन में ये बदलाव शामिल हैं.

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

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

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

  • बनाए गए फ़्रैगमेंट को छिपाने की अनुमति देने के लिए, फ़्रैगमेंट के ProGuard नियमों को अपडेट किया गया. (b/151605338)
  • DialogFragment क्लास पर FragmentLiveDataObserve Lint नियम को बंद कर दिया गया है, क्योंकि उनका लाइफ़साइकल और व्यू का लाइफ़साइकल हमेशा सिंक रहता है. इससे 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)
  • फ़्रैगमेंट में शामिल ProGuard नियमों के दायरे को कम किया गया है, ताकि यह पक्का किया जा सके कि इस्तेमाल न की गई फ़्रैगमेंट क्लास हटाई जा सकें. (b/149665169)
  • UseRequireInsteadOfGet Lint की जांच में, गलत तरीके से मिलने वाले नतीजों को ठीक किया गया. ऐसा तब होता है, जब 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 की नई जांच

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

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

  • R8 की चेतावनियों से बचने के लिए, फ़्रैगमेंट ProGuard फ़ाइलों को ठीक किया गया (b/148963981)
  • observe का इस्तेमाल करते समय, viewLifecycleOwner का इस्तेमाल करने का सुझाव देने वाली मौजूदा Lint जांच को बेहतर बनाया गया है. इससे 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 मैथड की मदद से जोड़े गए फ़्रैगमेंट, Class इंस्टेंस (या Kotlin के रीफ़ाइड वर्शन) लेते हैं. अब ProGuard, इन फ़्रैगमेंट के डिफ़ॉल्ट कन्स्ट्रक्टर को सेव रखता है. (b/148181315)
  • finishUpdate() को चलाते समय, FragmentStatePagerAdapter और FragmentPagerAdapter अब FragmentManager से मिलने वाले अपवादों को कैच नहीं करते. (aosp/1208711)
  • FragmentManager.findFragment() टैग, <fragment> टैग की मदद से जोड़े गए फ़्रैगमेंट के साथ काम नहीं कर रहा था. इस समस्या को ठीक किया गया है. (b/147784323)
  • <fragment> टैग का इस्तेमाल करके फ़्लोरेट किए गए फ़्रैगमेंट को, लेआउट में onCreate() से पहले हमेशा onInflate() का कॉल मिलता है. (aosp/1215856)
  • अगर गतिविधि पहले ही खत्म हो चुकी है, तो FragmentManager इंस्टेंस पर 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 आर्ग्युमेंट लेते हैं. ये तरीके, जोड़े जाने वाले फ़्रैगमेंट का इंस्टेंस बनाने के लिए, आपके FragmentFactory का इस्तेमाल करते हैं. fragment-ktx में, रीफ़ाइड टाइप (जैसे, fragmentTransaction.replace<YourFragment>(R.id.container)) का इस्तेमाल करने वाले Kotlin एक्सटेंशन भी जोड़े गए हैं.
  • लाइफ़साइकल ViewModel सेव की गई स्थिति का इंटिग्रेशन: फ़्रेगमेंट के साथ by viewModels(), by activityViewModels(), ViewModelProvider कन्स्ट्रक्टर या ViewModelProviders.of() का इस्तेमाल करते समय, अब SavedStateViewModelFactory डिफ़ॉल्ट फ़ैक्ट्री के तौर पर इस्तेमाल किया जाता है.
  • लिंट की नई जांच: लिंट की एक नई जांच जोड़ी गई है. इससे यह पक्का किया जा सकेगा कि onCreateView(), onViewCreated() या onActivityCreated() से LiveData को देखते समय, getViewLifecycleOwner() का इस्तेमाल किया जा रहा है.
  • getFragmentManager() का इस्तेमाल बंद किया जा रहा है: फ़्रैगमेंट पर getFragmentManager() और requireFragmentManager() मेथड का इस्तेमाल बंद कर दिया गया है. साथ ही, इन्हें एक getParentFragmentManager() मेथड से बदल दिया गया है. यह मेथड, फ़्रैगमेंट में जोड़े गए नॉन-नल FragmentManager को दिखाता है. isAdded() का इस्तेमाल करके यह पता लगाया जा सकता है कि इसे कॉल करना सुरक्षित है या नहीं.
  • FragmentManager.enableDebugLogging() बंद किया गया: स्टैटिक FragmentManager.enableDebugLogging तरीके को बंद कर दिया गया है. FragmentManager अब टैग FragmentManager के लिए Log.isLoggable() का इस्तेमाल करता है. इससे, अपने ऐप्लिकेशन को फिर से कंपाइल किए बिना, DEBUG या VERBOSE लॉगिंग को चालू किया जा सकता है.

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

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

वर्शन 1.2.0-rc05

8 जनवरी, 2020

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

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

  • <fragment> टैग का इस्तेमाल करते समय, फ़्रैगमेंट 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 सेट करने से, चाइल्ड फ़्रैगमेंट मैनेजर पर भी असर पड़ेगा. (aosp/1170095)

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

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

वर्शन 1.2.0-rc02

7 नवंबर, 2019

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

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

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

वर्शन 1.2.0-rc01

23 अक्टूबर, 2019

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

नई सुविधाएं

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

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

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

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

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

वर्शन 1.2.0-beta02

11 अक्टूबर, 2019

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

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

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

वर्शन 1.2.0-beta01

9 अक्टूबर, 2019

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

नई सुविधाएं

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

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

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

वर्शन 1.2.0-alpha02

7 अगस्त, 2019

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

नई सुविधाएं

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

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

  • डाइनैमिक तौर पर जोड़े गए फ़्रैगमेंट के लिए, FragmentContainerView को सबसे ज़्यादा सुझाया गया कंटेनर के तौर पर पेश किया गया है. यह FrameLayout वगैरह के इस्तेमाल की जगह लेता है, क्योंकि यह ऐनिमेशन की z-क्रम से जुड़ी समस्याओं को ठीक करता है और फ़्रैगमेंट में विंडो इनसेट डिस्पैच करता है. (b/37036000, aosp/985243, b/136494650)
  • फ़्रैगमेंट से फ़ुल किए गए व्यू से, उसमें मौजूद फ़्रैगमेंट को वापस पाने के लिए, स्टैटिक FragmentManager.findFragment(View) तरीका जोड़ा गया. fragment-ktx में Kotlin एक्सटेंशन भी उपलब्ध है. (aosp/1090757)
  • FragmentTransaction पर add() और replace() के नए ओवरलोड जोड़े गए हैं. ये ओवरलोड, आर्ग्युमेंट के तौर पर Class<? extends Fragment> और वैकल्पिक तौर पर Bundle लेते हैं. ये तरीके, जोड़े जाने वाले फ़्रैगमेंट का इंस्टेंस बनाने के लिए, आपके FragmentFactory का इस्तेमाल करते हैं. fragment-ktx में, रीफ़ाइड टाइप (जैसे, fragmentTransaction.replace<YourFragment>(R.id.container)) का इस्तेमाल करने वाले Kotlin एक्सटेंशन भी जोड़े गए हैं. (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)
  • फ़्रैगमेंट 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 अब फ़्रैगमेंट के व्यू को अटैच करने के बाद और onViewCreated() को कॉल करने से ठीक पहले, requestApplyInsets() को कॉल करता है. इससे यह पक्का होता है कि आपके व्यू में हमेशा सही इनसेट हों. (b/135945162)

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

  • FragmentTransaction को पॉप करते समय NullPointerException को ठीक किया गया, जो replace() से पहले setPrimaryNavigationFragment() का इस्तेमाल करता था. (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() को कॉल करने के बजाय, कॉन्टेंट व्यू के तौर पर कौनसा लेआउट सेट किया जाना चाहिए. इससे, आपके सबक्लास में कोई आर्ग्युमेंट वाला कंस्ट्रक्टर होना ज़रूरी है.
  • फ़्रैगमेंट LayoutId कंस्ट्रक्टर: 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)
  • FragmentTransaction को पॉप करते समय NullPointerException को ठीक किया गया, जो replace() से पहले setPrimaryNavigationFragment() का इस्तेमाल करता था. (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 तक के वर्शन के साथ काम नहीं करती. फ़्रैगमेंट के इस वर्शन का इस्तेमाल करते समय, कृपया 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)

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

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

ऐप्लिकेशन के काम करने के तरीके में बदलाव

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

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

  • एक्सएमएल में <fragment> टैग और FragmentActivity या AppCompatActivity के contentLayoutId कन्स्ट्रक्टर का इस्तेमाल करते समय आने वाली समस्या को ठीक किया गया. (b/129907905)
  • हमने एक समस्या को ठीक किया है. इस समस्या की वजह से, कॉन्फ़िगरेशन में बदलाव करने के बाद, बैक स्टैक पर मौजूद फ़्रैगमेंट कम से कम CREATED पर नहीं ले जाए जाते थे. इस वजह से, ViewModel और बनाए गए चाइल्ड फ़्रैगमेंट को सही तरीके से डिस्पोज नहीं किया जा सकता था. (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 तरीके को बंद कर दिया गया है. यह तरीका, बंडल के आर्ग्युमेंट के साथ काम करता था. ऐप्लिकेशन को instantiate के नए ओवरलोड का इस्तेमाल करना चाहिए, जो बंडल के साथ काम नहीं करता. (b/128836103)
  • FragmentScenario के तरीकों को अब @StyleRes के साथ सही तरीके से एनोटेट किया गया है. (aosp/924193)
  • FragmentTabHost का अब इस्तेमाल नहीं किया जा सकता. (b/127971835)
  • FragmentActivity का getThemedContext() हटा दिया गया है. (aosp/934078)

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

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

वर्शन 1.1.0-alpha05

13 मार्च, 2019

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

नई सुविधाएं

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

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

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

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

  • 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)
  • फ़्रैगमेंट की पिछली रिलीज़ के साथ बाइनरी के काम करने से जुड़ी समस्या को ठीक किया गया. (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 पाने के लिए वैकल्पिक लैंब्डा तरीका अपनाया जा सके. इससे, आपको val viewModel: MyViewModel by viewModels(::requireParentFragment) [b/119050253] जैसे कोड के साथ पैरंट फ़्रैगमेंट या अन्य कस्टम ViewModelStoreOwner को पास करने की अनुमति मिलती है

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

  • 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 सेट किया जा सकता है, ताकि यह कंट्रोल किया जा सके कि नए फ़्रैगमेंट इंस्टेंस कैसे इंस्टैंशिएट किए जाते हैं.
  • फ़्रैगमेंट से ViewModels को वापस पाने के लिए, एक नई by viewModels() Kotlin प्रॉपर्टी डेलिगेट जोड़ी गई है.
  • फ़्रेगमेंट के onStop() में, अब वे इनपुट इवेंट रद्द कर दिए जाते हैं जो प्रोसेस नहीं हो पाए हैं. जैसे, क्लिक.

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

  • Fragment API के पूरे प्लैटफ़ॉर्म पर, वैल्यू न होने की जानकारी देने वाले एनोटेशन का दायरा काफ़ी बढ़ाया गया है.

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

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

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

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