फ़्रैगमेंट

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

डिपेंडेंसी तय करना

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

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

Groovy

dependencies {
    def fragment_version = "1.8.5"

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

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

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

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

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

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

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

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

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

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

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

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

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

वर्शन 1.4.0-rc01

3 नवंबर, 2021

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

वर्शन 1.4.0-beta01

27 अक्टूबर, 2021

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

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

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

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

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

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

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

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

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

FragmentStrictMode एपीआई में रनटाइम की जांच की सुविधा मिलती है. इससे यह पुष्टि की जा सकती है कि आपका ऐप्लिकेशन या लाइब्रेरी, काम नहीं करने वाले फ़्रैगमेंट एपीआई को कॉल नहीं कर रही हैं. उल्लंघन का पता चलने पर, आपके पास लॉग मैसेज प्रिंट करने, अपना कस्टम लिसनर ट्रिगर करने या ऐप्लिकेशन को क्रैश करने का विकल्प होता है. FragmentStrictMode.Policy, यह कंट्रोल करता है कि कौनसी जांच चालू की गई हैं और कौनसी “पाबंदियां” ट्रिगर की गई हैं. इसे FragmentManager पर सेट किया जा सकता है. इसके लिए, setStrictModePolicy() का नया तरीका अपनाएं. यह नीति उस 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)

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

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

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

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

वर्शन 1.3.2

24 मार्च, 2021

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

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

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

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

  • फ़्रैगमेंट अब गतिविधि 1.2.2 पर निर्भर करता है. इसमें फ़्रैगमेंट 1.3.1 या इसके बाद के वर्शन का इस्तेमाल करते समय, गतिविधि की InvalidFragmentVersionForActivityResult लिंट जांच से जुड़ी समस्या को ठीक किया जाता है.
  • फ़्रैगमेंट अब 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 हो. इन नए एपीआई के पक्ष में, टारगेट फ़्रैगमेंट एपीआई को बंद कर दिया गया है. फ़्रैगमेंट रिज़ल्ट एपीआई का इस्तेमाल करके, नतीजे पाना लेख पढ़ें.

  • 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)
  • hide के साथ Animation का इस्तेमाल करने पर, ऐनिमेशन के आखिर में छिपे हुए फ़्रैगमेंट के फ़्लैश होने की समस्या को ठीक किया गया है. (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 के बाहर किया जा सकता है. (आईडी4397, 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 (Id6471, b/165307851, b/165300826) का इस्तेमाल करने के लिए, androidx को अपग्रेड करें

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

  • फ़्रैगमेंट रिसॉर्स फ़ाइलों को सही तरीके से निजी किया गया है. (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)
  • onAttachFragment() कॉलबैक में findFragmentById() या findFragmentByTag() को कॉल करने पर, FragmentManager अब सही फ़्रैगमेंट दिखाता है. (b/153082833)
  • जब फ़्रैगमेंट को बदलने वाले फ़्रैगमेंट को पोस्टपोन किया जाता है, तो फ़्रैगमेंट अब खत्म किए जा रहे फ़्रैगमेंट पर onCreateView() को कॉल नहीं करते. (b/143915710)
  • फ़्रेमवर्क Transition और AndroidX Transition इंस्टेंस को जोड़ने की कोशिश करते समय, गड़बड़ी का मैसेज अब अमान्य ट्रांज़िशन वाले फ़्रैगमेंट के बारे में बताता है. (b/155574969)

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

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

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

  • startIntentSenderForResult() का इस्तेमाल करते समय पार हुआ ActivityOptions अब मान्य है. (b/162247961)

आम समस्या

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

वर्शन 1.3.0-alpha07

22 जुलाई, 2020

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

नई सुविधाएं

  • FragmentScenario अब फ़्रैगमेंट को हमेशा 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 Lit की जांच करने की सुविधा, ?. और !! ऑपरेटर के चेन इस्तेमाल को सही तरीके से हैंडल नहीं कर पाती. (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 लिंट जांच में फ़ॉल्स पॉज़िटिव को ठीक किया गया. (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 क्लास को सही तरीके से सेव रखते हैं, न कि सभी Fragment इंस्टेंस के लिए इस्तेमाल किए जाने वाले. इससे फ़्रैगमेंट 1.2.1 में किए गए रिग्रेशन को ठीक किया जा सकता है. (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)
  • एक नया लिंट चेक जोड़ा गया, जो यह पुष्टि करता है कि 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 या दूसरे लेआउट के इस्तेमाल की जगह लेता है. यह उसी class, android:name, और वैकल्पिक android:tag के साथ भी काम करता है जो <fragment> टैग के साथ काम करता है. हालांकि, यह <fragment> की ओर से इस्तेमाल किए गए कस्टम कोड पाथ के बजाय, इस शुरुआती फ़्रैगमेंट को जोड़ने के लिए, सामान्य FragmentTransaction का इस्तेमाल करता है.
  • onDestroyView() का समय: फ़्रैगमेंट अब onDestroyView() को कॉल करने से पहले, बाहर निकलने के ऐनिमेशन, बाहर निकलने के फ़्रेमवर्क ट्रांज़िशन, और बाहर निकलने के AndroidX ट्रांज़िशन (ट्रांज़िशन 1.3.0 का इस्तेमाल करते समय) के पूरा होने का इंतज़ार करते हैं.
  • क्लास आधारित add() और replace(): FragmentTransaction पर add() और replace() के नए ओवरलोड जोड़े गए. साथ ही, Class<? extends Fragment> और वैकल्पिक Bundle आर्ग्युमेंट इस्तेमाल किए गए. ये तरीके, जोड़े जाने वाले फ़्रैगमेंट का इंस्टेंस बनाने के लिए, आपके FragmentFactory का इस्तेमाल करते हैं. fragment-ktx में ऐसे Kotlin एक्सटेंशन जोड़ दिए गए हैं जो सुधार किए गए टाइप (जैसे, fragmentTransaction.replace<YourFragment>(R.id.container)) का इस्तेमाल करते हैं.
  • लाइफ़साइकल 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 अपने-आप नहीं रखता. इसके लिए, आपको हर फ़्रैगमेंट क्लास के लिए, मैन्युअल रूप से 'रखें' नियम जोड़ना होगा. जब तक इस समस्या को aapt2 के ज़रिए ठीक नहीं किया जाता, तब तक हमने FragmentContainerView पर ले जाने का सुझाव देने वाले लिंट के नियम को बंद कर दिया है. (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)
  • फ़्रैगमेंट मैनेजर में 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 तरीका बंद कर दिया गया है. फ़्रैगमेंट Manager, अब 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 को डिफ़ॉल्ट फ़ैक्ट्री के तौर पर सेट कर दिया गया है. इसे Fragment के साथ by viewModels(), by activityViewModels(), ViewModelProvider कंस्ट्रक्टर या 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 में ऐसे Kotlin एक्सटेंशन को भी जोड़ दिया गया है जो सुधार किए गए टाइप (जैसे, fragmentTransaction.replace<YourFragment>(R.id.container)) का इस्तेमाल करता है. (b/126124987)
  • Fragment लाइफ़साइकल कॉलबैक में @MainThread एनोटेशन जोड़े गए. (b/127272564)
  • FragmentTransaction और FragmentManager.BackStackEntry पर ब्रेडक्रंब टाइटल से जुड़े एपीआई इस्तेमाल नहीं किए जा सकते. (b/138252944)
  • FragmentTransaction पर setTransitionStyle तरीके का इस्तेमाल नहीं किया जा सकता. (aosp/1011537)
  • FragmentManager में मौजूद कई तरीके अब abstract नहीं हैं. FragmentManager, abstract ही रहता है और इसे सीधे तौर पर इंस्टैंशिएट या एक्सटेंड नहीं किया जाना चाहिए. आपको getSupportFragmentManager(), getChildFragmentManager() वगैरह से सिर्फ़ मौजूदा इंस्टेंस मिलना चाहिए.

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

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

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

नई सुविधाएं

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

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

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

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

  • 1.1.0-alpha05 में रिग्रेशन ठीक किया गया जिसकी वजह से इनकमिंग फ़्रैगमेंट स्क्रीन पर फ़्लैश हो गया. (b/129405432)
  • उस समस्या को ठीक किया गया है जहां की कार्रवाइयों की पॉपबैकस्टैक+रिप्लेस+पॉपबैकस्टैक सीरीज़ के बाद मुख्य नेविगेशन फ़्रैगमेंट खो जाता है. (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)

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

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

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

  • 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)
  • Dialogफ़्रैगमेंट का onखारिज() अब 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

नई सुविधाएं

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

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

  • बैक स्टैक पर नेस्ट किए गए फ़्रैगमेंट का इस्तेमाल करते समय, IllegalStateException को ठीक किया गया (b/119256498)
  • FragmentFactory (aosp/820540) के साथ FragmentScenario.recreate() का इस्तेमाल करने पर होने वाले क्रैश को ठीक किया गया
  • फ़्रैगमेंट को हटाए जाने के बाद, टारगेट फ़्रैगमेंट को ऐक्सेस न करने की समस्या को ठीक किया गया है (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 पर निर्भर करता है.