फ़्रैगमेंट
| नया अपडेट | स्टेबल रिलीज़ | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
|---|---|---|---|---|
| 17 जून, 2026 | 1.8.9 | - | - | 1.9.0-alpha01 |
डिपेंडेंसी का एलान करना
Fragment पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.
अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:
ग्रूवी
dependencies { def fragment_version = "1.8.9" // Java language implementation implementation "androidx.fragment:fragment:$fragment_version" // Kotlin implementation "androidx.fragment:fragment-ktx:$fragment_version" // Compose implementation "androidx.fragment:fragment-compose:$fragment_version" // Testing Fragments in Isolation debugImplementation "androidx.fragment:fragment-testing-manifest:$fragment_version" androidTestImplementation "androidx.fragment:fragment-testing:$fragment_version" }
Kotlin
dependencies { val fragment_version = "1.8.9" // Java language implementation implementation("androidx.fragment:fragment:$fragment_version") // Kotlin implementation("androidx.fragment:fragment-ktx:$fragment_version") // Compose implementation("androidx.fragment:fragment-compose:$fragment_version") // Testing Fragments in Isolation debugImplementation("androidx.fragment:fragment-testing:$fragment_version") }
डिपेंडेंसी के बारे में ज़्यादा जानने के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.
सुझाव/राय दें या शिकायत करें
आपके सुझाव, शिकायत या राय से Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या आपके पास इस लाइब्रेरी को बेहतर बनाने के लिए सुझाव हैं, तो हमें बताएं. कृपया नई समस्या सबमिट करने से पहले, इस लाइब्रेरी में शामिल मौजूदा समस्याओं को देखें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या के लिए वोट किया जा सकता है.
ज़्यादा जानकारी के लिए, Issue Tracker का दस्तावेज़ देखें.
वर्शन 1.9
वर्शन 1.9.0-alpha01
17 जून, 2026
androidx.fragment:fragment-*:1.9.0-alpha01 रिलीज़ हो गया है. वर्शन 1.9.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- फ़्रैगमेंट अब
ContextAwareइंटरफ़ेस लागू करता है. इसका इस्तेमाल, फ़्रैगमेंट अटैच होने पर कोड को एक्ज़ीक्यूट करने के लिए किया जा सकता है. (I38019, b/477255355)
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट में क्रैश होने की समस्या को ठीक किया गया है. यह समस्या तब होती थी, जब अनुमानित बैक जेस्चर के दौरान ऐक्टिविटी को बैकग्राउंड में भेजा जाता था. (I55734, b/389589678)
- UnsafeFragmentLifecycleObserverDetector अब कंपोज़िशन में नहीं चलता. (Ic4176, b/501504696)
- [Fragment 1.8.9 से] उस समस्या को ठीक किया गया है जिसमें अनुमानित बैक जेस्चर को रद्द करने पर, ऐनिमेटर का इस्तेमाल करते समय, बाद का जेस्चर सही तरीके से ऐनिमेट नहीं होता था. (I0a400, b/384765586)
- [Fragment 1.8.9 से] उस गड़बड़ी को ठीक किया गया है जिसमें setMaxLifecycle और popBackStack के कॉम्बिनेशन की वजह से, टॉप फ़्रैगमेंट को RESUMED पर ले जाने में समस्या आ सकती थी. (I3448b, b/406127576)
- [Fragment 1.8.8 से] ऐसी समस्या को ठीक किया गया है जिसमें
setMaxLifecycle(Lifecycle.State.INITIALIZED)का इस्तेमाल करके जोड़े गए फ़्रैगमेंट की स्थिति को सेव करते समय, FragmentManager क्रैश हो जाता था. इन फ़्रैगमेंट कोonCreate()से नहीं गुज़ारा गया है. इसलिए, अब इनकी कोई भी स्थिति सेव नहीं की गई है और न ही इन्हेंonSaveInstanceState()कहा गया है. (I6e37a, b/408163315) - [Fragment 1.8.7 से] हमने एक समस्या ठीक की है. इस समस्या में, एक ही फ़्रेम में पॉप और बदलने की कार्रवाइयों के बाद, FragmentManager सही स्थिति में नहीं होता था. इससे, पीछे जाने पर झलक दिखाने वाले हाथ के जेस्चर के साथ क्रैश हो सकता था. (I50ad1, b/380288461)
- [Fragment 1.8.6 से] FragmentContainerView के
setOnApplyWindowInsetsListenerओवरराइड में अब null लिसनर का इस्तेमाल किया जा सकता है. (I575f0, b/282790626) - [Fragment 1.8.5 से]
IllegalStateExceptionको ठीक किया गया है. यहsaveBackStackसिर्फ़ तब ट्रिगर होता था, जब पीछे जाने पर झलक दिखाने वाले हाथ के जेस्चर को रद्द कर दिया जाता था या उसमें रुकावट आ जाती थी. (I3387d, b/342419080) - [Fragment 1.8.4 से]
AndroidFragmentके उसUninitializedPropertyAccessExceptionको ठीक किया गया है जबAndroidFragmentइंस्टेंस इस्तेमाल कर रही क्लास को डाइनैमिक तरीके से स्वैप किया जाता है. (I12dea, b/365578408) - [Fragment 1.8.4 से] उस समस्या को ठीक किया गया है जिसमें सिस्टम के बैक बटन को तेज़ी से दबाने या तेज़ी से बैक जेस्चर करने पर, फ़्रैगमेंट क्रैश हो जाते थे. (Ibc038, b/364804225, b/364914301)
- [Fragment 1.8.4 से] हमने फ़्रैगमेंट में मौजूद एक समस्या को ठीक किया है. इस समस्या की वजह से, अनुमानित बैक जेस्चर को बीच में रोकने पर, फ़्रैगमेंट मैनेजर की स्थिति तय नहीं हो पाती थी. साथ ही, गलत फ़्रैगमेंट भी दिखता था. (If82e2, b/338624457)
- [Fragment 1.8.3 से]
AndroidFragmentको कंपोज़िशन में जोड़ने पर अब क्रैश नहीं होता. ऐसा तब होता है, जब कंपोज़िशन में शामिल गतिविधि/फ़्रैगमेंट की स्थिति पहले से ही सेव हो. (I985e9, b/356643968) - [Fragment 1.8.2 से] FragmentManager के पास लंबित कार्रवाइयां होने पर, सिस्टम के बैक बटन को ट्रिगर करने से अब आउट ऑफ़ बाउंड अपवाद नहीं होगा. (I9ba32, b/342316801)
- [Fragment 1.8.2 से]
AndroidFragmentअब उन मामलों को ठीक से हैंडल करता है जहां पैरंट फ़्रैगमेंट को फ़्रैगमेंट बैक स्टैक पर रखा जाता है. इससे उस फ़्रैगमेंट पर वापस जाने पर, 'No view found for id' की समस्याएं नहीं होती हैं. (I94608, b/347706985) - [Fragment 1.8.2 से]
FragmentTransaction.addतरीके से जोड़े गए फ़्रैगमेंट, अबViewGroupलेने के बादonContainerAvailableतक इंतज़ार करते हैं. इसके बाद, वेonStart()पर आगे बढ़ते हैं. इससे उस एपीआई का इस्तेमाल करने वाले लोगों पर असर पड़ता है. जैसे,AndroidFragment. अब यहAndroidFragmentके फिर से कंपोज़िशन में शामिल होने का इंतज़ार करता है. इसके बाद, इसेonStart()के ज़रिए आगे बढ़ाया जाता है. (I94608, b/347706985) - [Fragment 1.8.1 से] कंटेनर के बिना फ़्रैगमेंट से जुड़ी समस्या ठीक की गई. इस समस्या में, अनुमानित बैक जेस्चर शुरू करने पर फ़्रैगमेंट तुरंत DESTROYED हो जाते थे. (If6b83, b/345244539)
बाहरी योगदान
- fragment-ktx को फ़्रैगमेंट लाइब्रेरी में मर्ज करें. सभी Kotlin एक्सटेंशन, अब मुख्य फ़्रैगमेंट आर्टफ़ैक्ट का हिस्सा हैं. fragment-ktx अब कंपैटिबिलिटी के लिए एक खाली आर्टफ़ैक्ट है. धन्यवाद, जेक व्हार्टन! (Idabaa)
वर्शन 1.8
वर्शन 1.8.9
13 अगस्त, 2025
androidx.fragment:fragment-*:1.8.9 रिलीज़ हो गया है. वर्शन 1.8.9 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें, अनुमानित बैक जेस्चर को रद्द करने पर, छिपाने की कार्रवाई ट्रिगर हो जाती थी. इससे ऐनिमेटर का इस्तेमाल करते समय, बाद का जेस्चर सही तरीके से ऐनिमेट नहीं होता था. (I0a400, b/384765586)
- उस गड़बड़ी को ठीक किया गया है जिसमें
setMaxLifecycleऔरpopBackStackके कॉम्बिनेशन से, टॉप फ़्रैगमेंट को RESUMED पर ले जाने में समस्या आ सकती थी. (I3448b, b/406127576)
वर्शन 1.8.8
4 जून, 2025
androidx.fragment:fragment-*:1.8.8 रिलीज़ हो गया है. वर्शन 1.8.8 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक कर दिया गया है जिसमें
setMaxLifecycle(Lifecycle.State.INITIALIZED)के ज़रिए जोड़े गए फ़्रैगमेंट की स्थिति को सेव करते समयFragmentManagerक्रैश हो जाता था. इन फ़्रैगमेंट कोonCreate()से नहीं गुज़ारा गया है. इसलिए, अब इनकी कोई भी स्थिति सेव नहीं की गई है और न हीonSaveInstanceState()को कॉल किया गया है. (I6e37a)
वर्शन 1.8.7
20 मई, 2025
androidx.fragment:fragment-*:1.8.7 रिलीज़ हो गया है. वर्शन 1.8.7 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- हमने एक समस्या ठीक की है. इस समस्या में, एक ही फ़्रेम में पॉप और बदलने की कार्रवाइयों के बाद
FragmentManagerसही स्थिति में नहीं था. इससेpopBackStackया अनुमानित बैक जेस्चर के ज़रिए बैकस्टैक को पॉप करने पर क्रैश हो सकता था. (I50ad1) - AndroidX ट्रांज़िशन का इस्तेमाल करने की वजह से होने वाली क्रैश की समस्या को ठीक किया गया है. इस समस्या में, फ़्रैगमेंट के लगातार होने वाले ट्रांज़ैक्शन, शुरू नहीं हुए ट्रांज़िशन को रद्द करने की कोशिश करते हैं. साथ ही, AndroidX ट्रांज़िशन लाइब्रेरी, ट्रांज़िशन की स्थिति को सही तरीके से मिटा नहीं पाती है. (b/414612221 देखें). (Ib5235)
वर्शन 1.8.6
12 फ़रवरी, 2025
androidx.fragment:fragment-*:1.8.6 रिलीज़ हो गया है. वर्शन 1.8.6 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
FragmentContainerViewकेsetOnApplyWindowInsetsListenerओवरराइड में अब एक नल लिसनर होता है, जो फ़्रेमवर्क की अनुमति के मुताबिक होता है. (I575f0, b/282790626)
वर्शन 1.8.5
30 अक्टूबर, 2024
androidx.fragment:fragment-*:1.8.5 रिलीज़ हो गया है. वर्शन 1.8.5 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- हमने
IllegalStateExceptionको ठीक किया है. यहsaveBackStackसिर्फ़ तब ट्रिगर होता था, जब अनुमानित बैक जेस्चर को रद्द कर दिया जाता था या उसमें रुकावट आ जाती थी. (I3387d, b/342419080)
वर्शन 1.8.4
2 अक्टूबर, 2024
androidx.fragment:fragment-*:1.8.4 रिलीज़ हो गया है. वर्शन 1.8.4 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- हमने उस समस्या को ठीक कर दिया है जिसमें AndroidX ट्रांज़िशन का इस्तेमाल करते समय, सिस्टम के 'वापस जाएं' बटन को तुरंत दबाने या हाथ के जेस्चर से तुरंत वापस जाने पर, फ़्रैगमेंट क्रैश हो जाते थे. (Ibc038, b/364804225)
- फ़्रैगमेंट में एक समस्या ठीक की गई है. इसमें, अनुमानित बैक जेस्चर को बीच में रोकने पर, फ़्रैगमेंट मैनेजर को अनडिफ़ाइंड स्थिति में भेज दिया जाता था. साथ ही, गलत फ़्रैगमेंट भी दिखता था. (If82e2, b/338624457)
AndroidFragmentकेUninitializedPropertyAccessExceptionको ठीक किया गया है. यह समस्या तब होती थी, जबAndroidFragmentइंस्टेंस इस्तेमाल की जा रही क्लास को डाइनैमिक तरीके से स्वैप किया जाता था. (I12dea)
वर्शन 1.8.3
4 सितंबर, 2024
androidx.fragment:fragment-*:1.8.3 रिलीज़ हो गया है. वर्शन 1.8.3 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
FragmentManagerअब पीछे जाने की झलक दिखाने वाले जेस्चर को हैंडल करते समय, लंबित कार्रवाइयों को ध्यान में रखता है. इससे यह पक्का हो जाएगा कि सिस्टम को वापस लाने पर, अबIndexOutOfBoundsExceptionनहीं होगा. (I9ba32, b/342316801)AndroidFragmentको कंपोज़िशन में जोड़ने पर, अब यह क्रैश नहीं होता. ऐसा तब होता है, जब गतिविधि/फ़्रैगमेंट की स्थिति पहले से ही सेव हो. (I985e9, b/356643968)
वर्शन 1.8.2
24 जुलाई, 2024
androidx.fragment:fragment-*:1.8.2 रिलीज़ हो गया है. वर्शन 1.8.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
AndroidFragmentअब उन मामलों को ठीक से हैंडल करता है जहां पैरंट फ़्रैगमेंट को फ़्रैगमेंट बैक स्टैक पर रखा जाता है. इससे उस फ़्रैगमेंट पर वापस जाने पर, 'No view found for id' की समस्याएं नहीं होती हैं. (I94608)FragmentTransaction.addतरीके से जोड़े गए फ़्रैगमेंट, अबViewGroupलेते हैं. इसके बाद, वेonContainerAvailableका इंतज़ार करते हैं. इसके बाद, वेonStart()पर जाते हैं. इससे उस एपीआई का इस्तेमाल करने वाले लोगों पर असर पड़ता है. जैसे,AndroidFragment. अबAndroidFragmentकोonStart()के ज़रिए आगे बढ़ाने से पहले,AndroidFragmentके फिर से कंपोज़िशन में शामिल होने का इंतज़ार करना होगा. (I94608)
वर्शन 1.8.1
26 जून, 2024
androidx.fragment:fragment-*:1.8.1 रिलीज़ हो गया है. वर्शन 1.8.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसकी वजह से कंटेनर के बिना फ़्रैगमेंट, बैक जेस्चर का अनुमान लगाने की सुविधा शुरू करते ही तुरंत
DESTROYEDहो जाते थे. अब येCREATEDस्थिति में तब तक बने रहते हैं, जब तक कि जेस्चर पूरा नहीं हो जाता. (If6b83, b/345244539)
वर्शन 1.8.0
12 जून, 2024
androidx.fragment:fragment-*:1.8.0 रिलीज़ हो गया है. वर्शन 1.8.0 में ये बदलाव शामिल हैं.
1.7.0 के बाद हुए ज़रूरी बदलाव
fragment-composeआर्टफ़ैक्ट में अब एकAndroidFragmentComposableशामिल है. इसकी मदद से, फ़्रैगमेंट क्लास के नाम का इस्तेमाल करके, Compose के क्रम में फ़्रैगमेंट जोड़े जा सकते हैं. यह फ़्रैगमेंट की स्थिति को सेव करने और वापस लाने की प्रोसेस को अपने-आप मैनेज करता है. इसका इस्तेमाल, फ़्रैगमेंट को बड़ा करने के लिएAndroidViewBindingका इस्तेमाल करने के पहले से सुझाए गए तरीके के विकल्प के तौर पर किया जाना चाहिए.FragmentManagerकेOnBackStackChangedListenerइंटरफ़ेस पर मौजूदonBackStackChangeCancelledकॉलबैक अबFragmentManagerमें कार्रवाइयां करने के दौरान ट्रिगर होता है. इससे यहonBackStackChangeCommittedकॉलबैक के ट्रिगर होने के समय के ज़्यादा करीब आ जाता है.
वर्शन 1.8.0-rc01
29 मई, 2024
androidx.fragment:fragment-*:1.8.0-rc01 रिलीज़ हो गया है. वर्शन 1.8.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
FragmentManagers OnBackStackChangedListenerइंटरफ़ेस पर मौजूदonBackStackChangeCancelledकॉलबैक अबFragmentManagerमें कार्रवाइयां करने के दौरान ट्रिगर होता है. इससे यहonBackStackChangeCommittedकॉलबैक के ट्रिगर होने के समय के ज़्यादा करीब आ जाता है. (I5ebfb, b/332916112)
वर्शन 1.8.0-beta01
14 मई, 2024
androidx.fragment:fragment-*:1.8.0-beta01 रिलीज़ हो गया है. वर्शन 1.8.0-beta01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट
1.7.1: अब पीछे जाने पर झलक दिखाने वाला हाथ का जेस्चर की सुविधा सिर्फ़ उन लेन-देन के लिए काम करेगी जिनमें सभी फ़्रैगमेंट में, Animator या Seekable Androidx Transition मौजूद है. इससे उस समस्या को ठीक किया गया है जिसमें कुछ हद तक आगे-पीछे किए जा सकने वाले लेन-देन को रद्द करने पर, काली स्क्रीन दिखती थी. (I43037, b/339169168)
वर्शन 1.8.0-alpha02
17 अप्रैल, 2024
androidx.fragment:fragment-*:1.8.0-alpha02 रिलीज़ हो गया है. वर्शन 1.8.0-alpha02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट
1.7.0-rc02से: ऐसे लॉग जोड़े गए हैं जिनसे यह पता चलेगा कि बिना किसी अन्य ट्रांज़िशन केsharedElementसेट करने पर, वह क्यों नहीं चलेगा. (Iec48e) - फ़्रैगमेंट
1.7.0-rc02: इस गड़बड़ी को ठीक किया गया है. इसमें, अगर किसी ऐसे लेन-देन में शेयर किया गया कोई ऐसा एलिमेंट जोड़ा जाता था जिसे ढूंढा नहीं जा सकता था, तो क्रैश हो जाता था. हालांकि, लेन-देन में मौजूद अन्य सभी ट्रांज़िशन को ढूंढा जा सकता था. अब लेन-देन को सही तरीके से, खोजे नहीं जा सकने वाले लेन-देन के तौर पर माना जाएगा. (I18ccd)
वर्शन 1.8.0-alpha01
3 अप्रैल, 2024
androidx.fragment:fragment-*:1.8.0-alpha01 रिलीज़ हो गया है. वर्शन 1.8.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- नए
AndroidFragmentComposableकी मदद से, फ़्रैगमेंट क्लास के नाम का इस्तेमाल करके, फ़्रैगमेंट को कंपोज़ हेरारकी में जोड़ा जा सकता है. यह फ़्रैगमेंट की स्थिति को सेव करने और वापस लाने की प्रोसेस को अपने-आप मैनेज करता है. इसका इस्तेमाल, AndroidViewBindingComposableकी जगह सीधे तौर पर किया जा सकता है.(b/312895363, Icf841)
दस्तावेज़ में बदलाव
OnBackStackChangedListenerएपीआई के लिए दस्तावेज़ अपडेट किए गए हैं. इनमें बताया गया है कि इन्हें कब कॉल किया जाता है और इनका इस्तेमाल कैसे किया जाना चाहिए. (I0bfd9)
डिपेंडेंसी अपडेट
- यह फ़्रैगमेंट अब Profile Installer 1.3.1 पर निर्भर करता है.
वर्शन 1.7
वर्शन 1.7.1
14 मई, 2024
androidx.fragment:fragment-*:1.7.1 रिलीज़ हो गया है. वर्शन 1.7.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- पीछे जाने पर झलक दिखाने वाला हाथ का जेस्चर अब सिर्फ़ उन लेन-देन के लिए काम करेगा जिनमें सभी फ़्रैगमेंट में, Animator या Seekable Androidx Transition मौजूद है. इस अपडेट में, आंशिक रूप से खोजे जा सकने वाले लेन-देन को रद्द करने पर खाली स्क्रीन दिखने की समस्या को ठीक किया गया है. (I43037, b/339169168)
वर्शन 1.7.0
1 मई, 2024
androidx.fragment:fragment-*:1.7.0 रिलीज़ हो गया है. वर्शन 1.7.0 में ये बदलाव शामिल हैं.
पीछे जाने पर झलक दिखाने वाले हाथ के जेस्चर की सुविधा
Animatorया AndroidX Transition 1.5.0 का इस्तेमाल करने पर, फ़्रैगमेंट अब ऐप्लिकेशन में पीछे जाने पर झलक दिखाने वाली सुविधा के साथ काम करते हैं. इससे उपयोगकर्ता, वापस जाने के लिए किए जाने वाले जेस्चर का इस्तेमाल करके, पिछले फ़्रैगमेंट को देख सकते हैं. इसके लिए, उन्हें ऐनिमेशन करने वाले व्यक्ति/ट्रांज़िशन से अनुमति लेनी होगी. इसके बाद, वे जेस्चर पूरा करके लेन-देन को पूरा कर सकते हैं या उसे रद्द कर सकते हैं.
| ट्रांज़िशन सिस्टम | एक्सएमएल संसाधन | पीछे जाने पर झलक दिखाने वाले हाथ के जेस्चर की सुविधा काम करती है |
|---|---|---|
Animation |
R.anim |
नहीं |
Animator |
R.animator |
हां |
फ़्रेमवर्क Transition |
R.transition |
नहीं |
AndroidX Transition के साथ Transition 1.4.1 या इससे पहले का वर्शन |
R.transition |
नहीं |
AndroidX Transition के साथ Transition 1.5.0 |
R.transition |
हां |
अगर आपने पीछे जाने पर झलक दिखाने वाले हाथ के जेस्चर की सुविधा के लिए ऑप्ट-इन किया है और इसके बाद आपको फ़्रैगमेंट में, पीछे जाने पर झलक दिखाने वाले हाथ के जेस्चर की सुविधा से जुड़ी कोई समस्या दिखती है, तो कृपया फ़्रैगमेंट से जुड़ी समस्या की शिकायत करें. साथ ही, एक ऐसा सैंपल प्रोजेक्ट शामिल करें जिसमें आपकी समस्या दिखती हो. अपनी ऐक्टिविटी के onCreate() में FragmentManager.enabledPredictiveBack(false) का इस्तेमाल करके, पीछे जाने पर झलक दिखाने वाला हाथ का जेस्चर सुविधा को बंद किया जा सकता है.
FragmentManager.OnBackStackChangedListener() अब onBackStackChangeProgressed() और onBackStackChangeCancelled() उपलब्ध कराता है. इनकी मदद से, पीछे जाने पर झलक दिखाने वाले हाथ के जेस्चर के प्रोग्रेस और रद्द किए गए इवेंट की जानकारी मिलती है.
Fragment Compose Artifact
एक नया fragment-compose आर्टफ़ैक्ट बनाया गया है. यह उन ऐप्लिकेशन को सपोर्ट करने पर फ़ोकस करता है जो फ़्रैगमेंट आधारित आर्किटेक्चर से पूरी तरह से कंपोज़ आधारित आर्किटेक्चर पर माइग्रेट कर रहे हैं.
इस नए आर्टफ़ैक्ट में उपलब्ध पहली सुविधा, Fragment पर content एक्सटेंशन मेथड है. इसका मकसद, किसी फ़्रैगमेंट के यूज़र इंटरफ़ेस (यूआई) के लिए Compose का इस्तेमाल करना आसान बनाना है. इसके लिए, यह आपके लिए एक ComposeView बनाता है और सही ViewCompositionStrategy सेट करता है.
class ExampleFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = content {
// Write your @Composable content here
val viewModel: ExampleViewModel = viewModel()
// or extract it into a separate, testable method
ExampleComposable(viewModel)
}
}
वर्शन 1.7.0-rc02
17 अप्रैल, 2024
androidx.fragment:fragment-*:1.7.0-rc02 रिलीज़ हो गया है. वर्शन 1.7.0-rc02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- ऐसे लॉग जोड़े गए हैं जिनसे यह पता चलता है कि बिना किसी अन्य ट्रांज़िशन के
sharedElementसेट करने पर, वह क्यों नहीं चलेगा. (Iec48e) - इस गड़बड़ी को ठीक किया गया है. इसमें, अगर किसी ऐसे लेन-देन में शेयर किया गया कोई ऐसा एलिमेंट जोड़ा जाता था जिसे ढूंढा नहीं जा सकता था, तो क्रैश हो जाता था. हालांकि, उस लेन-देन में मौजूद अन्य सभी ट्रांज़िशन को ढूंढा जा सकता था. अब लेन-देन को सही तरीके से, खोजे नहीं जा सकने वाले लेन-देन के तौर पर माना जाएगा. (I18ccd)
वर्शन 1.7.0-rc01
3 अप्रैल, 2024
androidx.fragment:fragment-*:1.7.0-rc01 रिलीज़ हो गया है. वर्शन 1.7.0-rc01 में ये बदलाव शामिल हैं.
डिपेंडेंसी अपडेट
- यह फ़्रैगमेंट अब Profile Installer 1.3.1 पर निर्भर करता है.
वर्शन 1.7.0-beta01
20 मार्च, 2024
androidx.fragment:fragment-*:1.7.0-beta01 रिलीज़ हो गया है. वर्शन 1.7.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
FragmentHostCallbackको अब Kotlin में लिखा गया है, ताकि होस्ट के जेनरिक टाइप की शून्यता,onGetHost()के रिटर्न टाइप की शून्यता से मेल खाए. (I40af5)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें कंटेनर में मौजूद नहीं होने वाले फ़्रैगमेंट पर, अनुमानित बैक जेस्चर का इस्तेमाल करने पर वह फ़्रैगमेंट कभी भी बंद नहीं होता था. अब फ़्रैगमेंट को तुरंत फ़ाइनल स्टेट में ले जाया जाएगा. (Ida0d9)
- Fragments में, अनुमानित बैक जेस्चर की मदद से आने वाले ट्रांज़िशन को रोकने पर, व्यू के खराब होने और स्क्रीन के खाली रहने की समस्या को ठीक किया गया है. (Id3f22, b/319531491)
वर्शन 1.7.0-alpha10
7 फ़रवरी, 2024
androidx.fragment:fragment-*:1.7.0-alpha10 रिलीज़ हो गया है. वर्शन 1.7.0-alpha10 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Fragment की पिछली रिलीज़ में मौजूद उस समस्या को ठीक किया गया है जिसमें
Animatorया AndroidX ट्रांज़िशन के लिए, Fragment की पीछे जाने पर झलक दिखाने वाली सुविधा का इस्तेमाल करने पर, FragmentshandleOnBackProgressedसेNullPointerExceptionदिखाएंगे. ऐसा तब होगा, जबaddOnBackStackChangedListenerके ज़रिए कोईFragmentManager.OnBackStackChangedListenerकभी नहीं जोड़ा गया हो. (I7c835)
वर्शन 1.7.0-alpha09
24 जनवरी, 2024
androidx.fragment:fragment-*:1.7.0-alpha09 रिलीज़ हो गया है. वर्शन 1.7.0-alpha09 में ये बदलाव शामिल हैं.
Fragment Compose Artifact
एक नया fragment-compose आर्टफ़ैक्ट बनाया गया है. यह उन ऐप्लिकेशन को सपोर्ट करने पर फ़ोकस करता है जो फ़्रैगमेंट आधारित आर्किटेक्चर से पूरी तरह से कंपोज़ आधारित आर्किटेक्चर पर माइग्रेट कर रहे हैं.
इस नए आर्टफ़ैक्ट में उपलब्ध पहली सुविधा, Fragment पर content एक्सटेंशन मेथड है. इसका मकसद, किसी फ़्रैगमेंट के यूज़र इंटरफ़ेस (यूआई) के लिए Compose का इस्तेमाल करना आसान बनाना है. इसके लिए, यह आपके लिए एक ComposeView बनाता है और सही ViewCompositionStrategy सेट करता है. (561cb7, b/258046948)
class ExampleFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = content {
// Write your @Composable content here
val viewModel: ExampleViewModel = viewModel()
// or extract it into a separate, testable method
ExampleComposable(viewModel)
}
}
नई सुविधाएं
FragmentManager.OnBackStackChangedListener()अबonBackStackChangeProgressed()औरonBackStackChangeCancelled()उपलब्ध कराता है. इनकी मदद से, पीछे जाने पर झलक दिखाने वाले हाथ के जेस्चर के प्रोग्रेस और रद्द किए गए इवेंट की जानकारी मिलती है. (214b87)
आम समस्या
Animatorया AndroidX ट्रांज़िशन के लिए, Fragment में पीछे जाने पर झलक दिखाने की सुविधा का इस्तेमाल करते समय, अगरaddOnBackStackChangedListenerके ज़रिए कोईFragmentManager.OnBackStackChangedListenerनहीं जोड़ा गया है, तो Fragment,handleOnBackProgressedसेNullPointerExceptionथ्रो करेगा. लिसनर को मैन्युअल तरीके से जोड़ने पर, क्रैश की समस्या ठीक हो जाएगी. इस समस्या को ठीक करने के लिए, Fragments का अगला वर्शन उपलब्ध होगा.
वर्शन 1.7.0-alpha08
10 जनवरी, 2024
androidx.fragment:fragment-*:1.7.0-alpha08 रिलीज़ हो गया है. वर्शन 1.7.0-alpha08 में ये बदलाव शामिल हैं.
खाली करने के लिए जगह
- ट्रांज़िशन लाइब्रेरी के लिए, कामचलाऊ समाधान को हटा दिया गया है. इस समस्या को Transition
1.5.0-alpha06में ठीक कर दिया गया है. (I04356)
वर्शन 1.7.0-alpha07
29 नवंबर, 2023
androidx.fragment:fragment-*:1.7.0-alpha07 रिलीज़ हो गया है. वर्शन 1.7.0-alpha07 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- शेयर किए गए एलिमेंट का ट्रांज़िशन सेट करने और enter/exitTransition सेट न करने की वजह से होने वाली
NullPointerExceptionगड़बड़ी को ठीक किया गया है. (I8472b) - फ़्रैगमेंट
1.6.2से: जबFragmentContainerViewका फ़्रैगमेंट बड़ा किया जाता है, तो उसकी स्थितियां, जैसे किFragmentManager, होस्ट, और आईडी अबonInflateकॉलबैक में ऐक्सेस की जा सकती हैं. (I1e44c, b/307427423) - फ़्रैगमेंट
1.6.2से: फ़्रैगमेंट के सेट को हटाने के लिएclearBackStackका इस्तेमाल करने पर, पैरंट फ़्रैगमेंट केViewModelsमिटने पर, नेस्ट किए गए किसी भी फ़्रैगमेंट काViewModelअब मिट जाएगा. (I6d83c, b/296173018)
वर्शन 1.7.0-alpha06
4 अक्टूबर, 2023
androidx.fragment:fragment-*:1.7.0-alpha06 रिलीज़ हो गया है. वर्शन 1.7.0-alpha06 में ये बदलाव शामिल हैं.
डिपेंडेंसी अपडेट
- Fragments को अपडेट कर दिया गया है. अब यह Transition
1.5.0-alpha04में जोड़े गए नएanimateToStartAPI पर निर्भर करता है.
वर्शन 1.7.0-alpha05
20 सितंबर, 2023
androidx.fragment:fragment-*:1.7.0-alpha05 रिलीज़ हो गया है. वर्शन 1.7.0-alpha05 में ये बदलाव शामिल हैं.
नई सुविधाएं
- AndroidX ट्रांज़िशन का इस्तेमाल करते समय, फ़्रैगमेंट अब पीछे जाने पर झलक दिखाने वाले हाथ के जेस्चर की सुविधा के साथ काम करते हैं. इससे, पीछे जाने के जेस्चर का इस्तेमाल करके, पिछले फ़्रैगमेंट पर वापस जाया जा सकता है. इसके लिए, आपको AndroidX ट्रांज़िशन का इस्तेमाल करना होगा. इसके बाद, आपको यह तय करना होगा कि जेस्चर पूरा होने पर ट्रांज़ैक्शन को पूरा करना है या रद्द करना है. इस सुविधा को चालू करने के लिए, आपको ट्रांज़िशन
1.5.0-alpha03रिलीज़ पर निर्भर रहना होगा. (Ib49b4, b/285175724)
मौजूदा समस्याएं
- फ़िलहाल, एक समस्या यह है कि ट्रांज़िशन के साथ बैक जेस्चर को एक बार रद्द करने के बाद, अगली बार बैक जेस्चर शुरू करने पर ट्रांज़िशन नहीं चलेगा. इससे स्क्रीन खाली हो जाएगी. ऐसा ट्रांज़िशन लाइब्रेरी में किसी समस्या की वजह से हो सकता है. (b/300157785). अगर आपको यह समस्या दिखती है, तो कृपया Fragment के ख़िलाफ़ समस्या की शिकायत करें. साथ ही, एक ऐसा सैंपल प्रोजेक्ट शामिल करें जिससे आपकी समस्या को दोहराया जा सके. अपनी ऐक्टिविटी के
onCreate()मेंFragmentManager.enabledPredictiveBack(false)का इस्तेमाल करके, पीछे जाने पर झलक दिखाने वाला हाथ का जेस्चर सुविधा को बंद किया जा सकता है.
वर्शन 1.7.0-alpha04
6 सितंबर, 2023
androidx.fragment:fragment-*:1.7.0-alpha04 रिलीज़ हो गया है. वर्शन 1.7.0-alpha04 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- अनुमानित बैक जेस्चर को रद्द करने पर, फ़्रैगमेंट के सही लाइफ़साइकल की स्थिति में न पहुंचने की समस्या को ठीक किया गया है. (I7cffe, b/297379023)
- ऐसी रिग्रेशन समस्या को ठीक किया गया है जिसमें ट्रांज़िशन के साथ ऐनिमेशन चलाने की अनुमति दी गई थी. (I59f36)
- फ़्रैगमेंट के साथ पीछे जाने पर झलक दिखाने वाले हाथ के जेस्चर का इस्तेमाल करते समय होने वाली समस्या को ठीक किया गया है. इस समस्या में, बैक स्टैक पर मौजूद आखिरी से दूसरे फ़्रैगमेंट पर तेज़ी से दो बार वापस जाने की कोशिश करने पर ऐप्लिकेशन क्रैश हो जाता था. (Ifa1a4)
वर्शन 1.7.0-alpha03
23 अगस्त, 2023
androidx.fragment:fragment-*:1.7.0-alpha03 रिलीज़ हो गया है. वर्शन 1.7.0-alpha03 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- अनुमानित तौर पर पीछे जाने की सुविधा का इस्तेमाल करते समय, फ़्रैगमेंट से जुड़ी समस्या को ठीक किया गया है. इस समस्या की वजह से, फ़्रैगमेंट मैनेजर के बैक स्टैक में मौजूद पहले फ़्रैगमेंट को स्किप कर दिया जाता था. साथ ही, तीन बटन वाले नेविगेशन या अनुमानित तौर पर पीछे जाने के जेस्चर के ज़रिए सिस्टम बैक का इस्तेमाल करने पर, गतिविधि बंद हो जाती थी. (I0664b, b/295231788)
वर्शन 1.7.0-alpha02
9 अगस्त, 2023
androidx.fragment:fragment-*:1.7.0-alpha02 रिलीज़ हो गया है. वर्शन 1.7.0-alpha02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- API 34 से, पीछे जाने पर झलक दिखाने वाले हाथ के जेस्चर के साथ फ़्रैगमेंट का इस्तेमाल करते समय, अगर ट्रांज़िशन सिस्टम का इस्तेमाल किया जा रहा है, तो फ़्रैगमेंट अब तब तक इंतज़ार करेंगे, जब तक जेस्चर पूरा नहीं हो जाता. इसके बाद, वे बैक ऐक्शन को पूरा करेंगे. ऐसा तब होगा, जब ट्रांज़िशन सिस्टम में सीकिंग (
Animations,Transitions) की सुविधा काम नहीं करती या ट्रांज़िशन की सुविधा काम नहीं करती. (I8100c)
वर्शन 1.7.0-alpha01
7 जून, 2023
androidx.fragment:fragment-*:1.7.0-alpha01 रिलीज़ हो गया है. इस वर्शन को इंटरनल ब्रांच में डेवलप किया गया है.
नई सुविधाएं
Animatorका इस्तेमाल करने पर, फ़्रैगमेंट अब ऐप्लिकेशन में पीछे जाने पर झलक दिखाने वाली सुविधा के साथ काम करते हैं. इससे, वापस जाने के जेस्चर का इस्तेमाल करके, पिछले फ़्रैगमेंट को अपने कस्टम ऐनिमेटर के साथ देखा जा सकता है. इसके बाद, यह तय किया जा सकता है कि जेस्चर पूरा करके लेन-देन को पूरा करना है या रद्द करना है. एक्सपेरिमेंट के तौर पर उपलब्धenablePredictiveBack()का इस्तेमाल करके औरfalseपास करके, इस नई सुविधा को बंद किया जा सकता है.
वर्शन 1.6
वर्शन 1.6.2
1 नवंबर, 2023
androidx.fragment:fragment-*:1.6.2 रिलीज़ हो गया है. वर्शन 1.6.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
FragmentContainerViewके फ़्रैगमेंट के इन्फ़्लेट होने पर, अब इसकी स्थितियांFragmentManager, होस्ट, और आईडी कोonInflateकॉलबैक में ऐक्सेस किया जा सकता है. (I1e44c, b/307427423)- फ़्रैगमेंट के किसी सेट को हटाने के लिए
clearBackStackका इस्तेमाल करने पर, अब पैरंट फ़्रैगमेंट केViewModelsक्लियर होने पर, नेस्ट किए गए किसी भी फ़्रैगमेंट केViewModelक्लियर हो जाएंगे. (I6d83c, b/296173018)
वर्शन 1.6.1
26 जुलाई, 2023
androidx.fragment:fragment-*:1.6.1 रिलीज़ हो गया है. वर्शन 1.6.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- गतिविधि के बंद होने पर सेव की गई स्थिति को गलत तरीके से कैश मेमोरी में सेव होने की समस्या को ठीक किया गया है. ऐसा तब होता था, जब गतिविधि को बंद किया गया हो, लेकिन खत्म न किया गया हो. यह समस्या तब भी होती थी, जब फ़्रैगमेंट इंस्टेंस को वापस
RESUMEDस्थिति में ले जाया गया हो. इससे, कैश मेमोरी में सेव की गई स्थिति का फिर से इस्तेमाल किया जा सकेगा. ऐसा तब होगा, जब उस फ़्रैगमेंट इंस्टेंस को सेव और वापस लाने के लिए, एक से ज़्यादा पिछली गतिविधियां वाले एपीआई का इस्तेमाल किया जा रहा हो और वह पिछली गतिविधियां में मौजूद हो. (I71288, b/246289075)
डिपेंडेंसी अपडेट
- अब फ़्रैगमेंट, ऐक्टिविटी 1.7.2 पर निर्भर करता है. इससे उस समस्या को ठीक किया गया है जिसमें Kotlin का इस्तेमाल करने वाले लोग, ऐक्टिविटी पर साफ़ तौर पर डिपेंडेंसी के बिना
ComponentDialogको नहीं बढ़ा सकते थे. (b/287509323)
वर्शन 1.6.0
7 जून, 2023
androidx.fragment:fragment-*:1.6.0 रिलीज़ हो गया है. वर्शन 1.6.0 में ये बदलाव शामिल हैं.
1.5.0 के बाद हुए अहम बदलाव
Fragmentके सेव किए गए स्टेट को पूरी तरह से दो हिस्सों में बांट दिया गया है: प्राइवेट लाइब्रेरी स्टेट (कस्टमParcelableक्लास) और डेवलपर की ओर से उपलब्ध कराई गई स्टेट. डेवलपर की ओर से उपलब्ध कराई गई स्टेट को अब हमेशाBundleमें सेव किया जाता है. इससे यह पता चलता है कि फ़्रैगमेंट की स्टेट कहां से आ रही है.FragmentManager.OnBackStackChangedListenerइंटरफ़ेस को बड़ा किया गया है. इसमेंonBackStackChangeStartedऔरonBackStackChangeCommittedके दो और कॉलबैक जोड़े गए हैं. इन्हें हरFragmentके साथ कॉल किया जाता है. ऐसा तब होता है, जब उन्हें फ़्रैगमेंट बैक स्टैक में जोड़ा/हटाया जाता है और लेन-देन पूरा होने के तुरंत बाद किया जाता है.FragmentStrictModeने एक नयाWrongNestedHierarchyViolationजोड़ा है. यह तब पता लगाता है, जब कोई चाइल्ड फ़्रैगमेंट अपने पैरंट की व्यू हैरारकी में नेस्ट किया गया हो, लेकिन पैरंट केchildFragmentManagerमें न जोड़ा गया हो.FragmentऔरFragmentManagerएपीआई,IntentयाIntentSenderलेते हैं. अब इन्हें@NonNullके साथ सही तरीके से एनोटेट किया गया है, ताकि शून्य वैल्यू को पास होने से रोका जा सके. ऐसा इसलिए, क्योंकि शून्य वैल्यू हमेशा उन Android फ़्रेमवर्क एपीआई को तुरंत क्रैश कर देती है जिन्हें ये तरीके कॉल करते हैं.DialogFragmentअबrequireComponentDialog()एपीआई के ज़रिए,ComponentDialogके डेटा का ऐक्सेस देता है.- अब फ़्रैगमेंट, लाइफ़साइकल
2.6.1पर निर्भर करता है. - अब फ़्रैगमेंट, SavedState
1.2.1पर निर्भर करता है. - अब फ़्रैगमेंट, ProfileInstaller
1.3.0पर निर्भर करता है. fragment-testing-manifestआर्टफ़ैक्ट, मेनिफ़ेस्ट एंट्री को फ़्रैगमेंट-टेस्टिंग कॉम्पोनेंट से अलग करता है. इसका मतलब है कि ये काम किए जा सकते हैं:debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z") androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")इससे
fragment-testingऔरandroidx.testके बीच वर्शन के अंतर की वजह से होने वाले टकराव से बचा जा सकता है
वर्शन 1.6.0-rc01
10 मई, 2023
androidx.fragment:fragment-*:1.6.0-rc01 रिलीज़ हो गया है. वर्शन 1.6.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- इस समस्या को ठीक कर दिया गया है. इसकी वजह से, एक के बाद एक कई
startActivityForResultअनुरोध किए जाने पर, गलत अनुरोध कोड के साथActivityResultभेजे जा रहे थे. (If0b9d, b/249519359) - उस समस्या को ठीक किया गया है जिसमें
onBackStackChangeListenerकॉलबैक, उन लेन-देन के लिए भेजे जा रहे थे जिनसे बैक स्टैक में कोई बदलाव नहीं हुआ था. ऐसा तब हो रहा था, जब उन्हें उन लेन-देन के साथ मिला दिया गया था जिनसे बैक स्टैक में बदलाव होता है. (I0eb5c, b/279306628)
वर्शन 1.6.0-beta01
19 अप्रैल, 2023
androidx.fragment:fragment-*:1.6.0-beta01 रिलीज़ हो गया है. वर्शन 1.6.0-beta01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- टाइमआउट के साथ
postponeEnterTransitionका इस्तेमाल करने और फिर स्थगित किए गए फ़्रैगमेंट को बदलने से, अब स्थगित किए गए फ़्रैगमेंट का डेटा लीक नहीं होता. (I2ec7d, b/276375110) - अब नए
onBackStackChangeStartedऔरonBackStackChangeCommittedकॉलबैक, फ़्रैगमेंट को सिर्फ़ एक बार भेजेंगे. भले ही, कई लेन-देन में एक ही फ़्रैगमेंट शामिल हो. (Ic6b69)
वर्शन 1.6.0-alpha09
5 अप्रैल, 2023
androidx.fragment:fragment-*:1.6.0-alpha09 रिलीज़ हो गया है. वर्शन 1.6.0-alpha09 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
DialogFragmentअबrequireComponentDialog()एपीआई के ज़रिए,ComponentDialogके डेटा का ऐक्सेस देता है. (I022e3, b/234274777)commitNow(),executePendingTransactions(), औरpopBackStackImmediate()एपीआई के फ़्रैगमेंट को@MainThreadके साथ एनोटेट किया गया है. इसका मतलब है कि अब ये सभी एपीआई, रनटाइम पर फ़ेल होने के बजाय, मुख्य थ्रेड से कॉल न किए जाने पर बिल्ड से जुड़ी गड़बड़ियां दिखाएंगे. (Ic9665, b/236538905)
गड़बड़ियां ठीक की गईं
FragmentManagerमें मौजूद एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, एक ही फ़्रेम में सेव करने और वापस लाने की प्रोसेस के दौरान क्रैश हो सकता था. (Ib36af, b/246519668)OnBackStackChangedListeneronBackStackChangeStartedऔरonBackStackChangeCommittedकॉलबैक अब सिर्फ़ तब लागू होते हैं, जबFragmentManagerपिछली गतिविधियों में बदलाव किया जाता है. (I66055, b/274788957)
वर्शन 1.6.0-alpha08
22 मार्च, 2023
androidx.fragment:fragment-*:1.6.0-alpha08 रिलीज़ हो गया है. वर्शन 1.6.0-alpha08 में ये बदलाव शामिल हैं.
व्यवहार में बदलाव
- फ़्रैगमेंट ऑपरेशन के लागू होने से पहले,
OnBackStackChangedListener.onBackStackChangeCommitedकॉलबैक को लागू करने के लिए, उसके समय में बदलाव किया गया है. इससे यह पक्का होता है कि कॉलबैक को कभी भी ऐसा फ़्रैगमेंट नहीं भेजा जाएगा जो अलग हो गया हो. (I66a76, b/273568280)
गड़बड़ियां ठीक की गईं
- Fragment
1.5.6: इस समस्या को ठीक किया गया है. इसमें, अगरLifecycleपहले से हीSTARTEDथा और कोई नतीजा पहले से ही उपलब्ध था, तोsetFragmentResultListenerके अंदरclearFragmentResultListenerको कॉल करने पर काम नहीं करता था. (If7458)
डिपेंडेंसी से जुड़े अपडेट
- अब फ़्रैगमेंट, लाइफ़साइकल
2.6.1पर निर्भर करता है. (586fe7) - अब फ़्रैगमेंट, SavedState
1.2.1पर निर्भर करता है. (078e4e) - अब फ़्रैगमेंट, ProfileInstaller
1.3.0पर निर्भर करता है. (3fc05b)
वर्शन 1.6.0-alpha07
8 मार्च, 2023
androidx.fragment:fragment-*:1.6.0-alpha07 रिलीज़ हो गया है. वर्शन 1.6.0-alpha07 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट
1.5.6: इस समस्या को ठीक किया गया है. इसमें किसी फ़्रैगमेंट को हटाने पर, गतिविधि का मेन्यू अमान्य हो जाता था. इससे फ़र्क़ नहीं पड़ता था कि फ़्रैगमेंट में मेन्यू आइटम जोड़े गए हैं या नहीं. (50f098, b/244336571)
वर्शन 1.6.0-alpha06
22 फ़रवरी, 2023
androidx.fragment:fragment-*:1.6.0-alpha06 रिलीज़ हो गया है. वर्शन 1.6.0-alpha06 में ये बदलाव शामिल हैं.
व्यवहार में बदलाव
FragmentManagerकेonBackStackChangedListenerपर मौजूद नयाonBackStackChangedStartedकॉलबैक, अब फ़्रैगमेंट के टारगेट स्टेटस पर जाने से पहले ही एक्ज़ीक्यूट हो जाएगा. (I34726)
वर्शन 1.6.0-alpha05
8 फ़रवरी, 2023
androidx.fragment:fragment-*:1.6.0-alpha05 रिलीज़ हो गया है. वर्शन 1.6.0-alpha05 में ये बदलाव शामिल हैं.
नई सुविधाएं
FragmentManager.OnBackStackChagnedListenerइंटरफ़ेस में अब दो और कॉलबैक,onBackStackChangeStartedऔरonBackStackChangeCommittedउपलब्ध हैं. इनकी मदद से,FragmentManagerमें पिछली गतिविधियों में बदलाव होने पर ज़्यादा जानकारी मिलती है और उसे कंट्रोल किया जा सकता है. (Ib7ce5, b/238686802)
एपीआई में हुए बदलाव
FragmentऔरFragmentManagerएपीआई,IntentयाIntentSenderलेते हैं. अब इन्हें@NonNullके साथ सही तरीके से एनोटेट किया गया है, ताकि शून्य वैल्यू को पास होने से रोका जा सके. ऐसा इसलिए, क्योंकि शून्य वैल्यू हमेशा उन Android फ़्रेमवर्क एपीआई को तुरंत क्रैश कर देती है जिन्हें ये तरीके कॉल करते हैं. (I06fd4)
वर्शन 1.6.0-alpha04
7 दिसंबर, 2022
androidx.fragment:fragment-*:1.6.0-alpha04 रिलीज़ हो गया है. वर्शन 1.6.0-alpha04 में ये बदलाव शामिल हैं.
नई सुविधाएं
FragmentStrictModeने एक नयाWrongNestedHierarchyViolationजोड़ा है. यह तब पता लगाता है, जब कोई चाइल्ड फ़्रैगमेंट अपने पैरंट की व्यू हैरारकी में नेस्ट किया गया हो, लेकिन पैरंट केchildFragmentManagerमें न जोड़ा गया हो. (I72521, b/249299268)
व्यवहार में बदलाव
- अब फ़्रैगमेंट,
SavedStateRegistryसे पहले अपनीonAttach()स्थिति को वापस लाते हैं. इससे यह पक्का होता है कि यह सभी अपवर्ड लाइफ़साइकल के तरीकों से उपलब्ध है. (I1e2b1)
एपीआई में हुए बदलाव
fragment-testing-manifestआर्टफ़ैक्ट, मेनिफ़ेस्ट एंट्री को फ़्रैगमेंट-टेस्टिंग कॉम्पोनेंट से अलग करता है. इसका मतलब है कि ये काम किए जा सकते हैं:
debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z")
androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")
इससे fragment-testing और androidx.test के बीच वर्शन के अंतर की वजह से होने वाले टकराव से बचा जा सकता है.(I8e534, b/128612536)
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट
1.5.5से: फ़्रैगमेंट अबViewModelकी स्थिति को, व्यू रजिस्ट्री की सेव की गई स्थिति के हिस्से के तौर पर गलत तरीके से सेव नहीं करेंगे. (I10d2b, b/253546214)
वर्शन 1.6.0-alpha03
5 अक्टूबर, 2022
androidx.fragment:fragment:1.6.0-alpha03, androidx.fragment:fragment-ktx:1.6.0-alpha03, और androidx.fragment:fragment-testing:1.6.0-alpha03 रिलीज़ किए जाते हैं. वर्शन 1.6.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
DialogFragmentको बढ़ाने वाली क्लास को अबonDismiss()ओवरराइड में सुपर को कॉल करना होगा. (I14798, b/238928865)
गड़बड़ियां ठीक की गईं
- नए प्रोवाइडर कॉलबैक इंटरफ़ेस (
OnConfigurationChangedProvider,OnMultiWindowModeChangedProvider,OnTrimMemoryProvider,OnPictureInPictureModeChangedProvider) को इंटिग्रेट करने की वजह से हुई रिग्रेशन की समस्याओं को ठीक किया गया है. इससे यह पक्का किया जा सकेगा कि फ़्रैगमेंट को हमेशा सही कॉलबैक मिलें. (I9b380,I34581, (I8dfe6, b/242570955),If9d6b,Id0096,I690b3,I2cba2)
वर्शन 1.6.0-alpha02
24 अगस्त, 2022
androidx.fragment:fragment:1.6.0-alpha02, androidx.fragment:fragment-ktx:1.6.0-alpha02, और androidx.fragment:fragment-testing:1.6.0-alpha02 रिलीज़ किए जाते हैं. वर्शन 1.6.0-alpha02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट
1.5.2से: एक समस्या ठीक की गई है. इस समस्या में, एक ही समय परpopBackStack()औरreplace()लेन-देन को लागू करने पर, फ़्रैगमेंट से बाहर निकलने पर गलतAnimation/Animatorचल सकता था. (Ib1c07, b/214835303)
वर्शन 1.6.0-alpha01
27 जुलाई, 2022
androidx.fragment:fragment:1.6.0-alpha01, androidx.fragment:fragment-ktx:1.6.0-alpha01, और androidx.fragment:fragment-testing:1.6.0-alpha01 रिलीज़ किए जाते हैं. वर्शन 1.6.0-alpha01 में ये बदलाव शामिल हैं.
व्यवहार में बदलाव
Fragmentके सेव किए गए स्टेट को पूरी तरह से दो हिस्सों में बांट दिया गया है: प्राइवेट लाइब्रेरी स्टेट (कस्टमParcelableक्लास) और डेवलपर की ओर से उपलब्ध कराई गई स्टेट. डेवलपर की ओर से उपलब्ध कराई गई स्टेट को अब हमेशाBundleमें सेव किया जाता है. इससे यह पता चलता है कि फ़्रैगमेंट की स्टेट कहां से आ रही है. (b/207158202)
गड़बड़ियां ठीक की गईं
- Fragment
1.5.1से:DialogFragmentCallbacksDetectorमें रिग्रेशन की समस्या ठीक की गई है. इस समस्या में, AGP 7.4 के साथ बंडल किए गए लिंट वर्शन का इस्तेमाल करने पर, लिंट क्रैश हो जाता था. (b/237567009)
डिपेंडेंसी अपडेट
- Fragment
1.5.1से: Fragment लाइब्रेरी अब Lifecycle2.5.1पर निर्भर करती है. (Id204c) - Fragment
1.5.1से: Fragment लाइब्रेरी अब Activity1.5.1पर निर्भर करती है. (I10f07)
संस्करण 1.5
वर्शन 1.5.7
19 अप्रैल, 2023
androidx.fragment:fragment:1.5.7, androidx.fragment:fragment-ktx:1.5.7, और androidx.fragment:fragment-testing:1.5.7 रिलीज़ किए जाते हैं. वर्शन 1.5.7 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- टाइमआउट के साथ
postponeEnterTransitionका इस्तेमाल करने और फिर स्थगित किए गए फ़्रैगमेंट को बदलने से, अब स्थगित किए गए फ़्रैगमेंट का डेटा लीक नहीं होता. (I2ec7d, b/276375110)
वर्शन 1.5.6
22 मार्च, 2023
androidx.fragment:fragment:1.5.6, androidx.fragment:fragment-ktx:1.5.6, और androidx.fragment:fragment-testing:1.5.6 रिलीज़ किए जाते हैं. वर्शन 1.5.6 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें किसी फ़्रैगमेंट को हटाने पर, गतिविधि का मेन्यू अमान्य हो जाता था. इससे फ़र्क़ नहीं पड़ता था कि फ़्रैगमेंट में मेन्यू आइटम जोड़े गए हैं या नहीं. (50f098, b/244336571)
- हमने उस समस्या को ठीक कर दिया है जिसमें
Lifecycleके पहले सेSTARTEDहोने और नतीजे के पहले से उपलब्ध होने पर,setFragmentResultListenerके अंदरclearFragmentResultListenerको कॉल करने पर काम नहीं करता था. (If7458)
वर्शन 1.5.5
7 दिसंबर, 2022
androidx.fragment:fragment:1.5.5, androidx.fragment:fragment-ktx:1.5.5, और androidx.fragment:fragment-testing:1.5.5 रिलीज़ किए जाते हैं. वर्शन 1.5.5 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- अब फ़्रैगमेंट, व्यू रजिस्ट्री की सेव की गई स्थिति के हिस्से के तौर पर
ViewModelकी स्थिति को गलत तरीके से सेव नहीं करेंगे. (I10d2b, b/253546214)
वर्शन 1.5.4
24 अक्टूबर, 2022
androidx.fragment:fragment:1.5.4, androidx.fragment:fragment-ktx:1.5.4, और androidx.fragment:fragment-testing:1.5.4 रिलीज़ किए जाते हैं. वर्शन 1.5.4 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- हमने उस गड़बड़ी को ठीक कर दिया है जिसमें कस्टम
FragmentControllerका इस्तेमाल करने पर, चाइल्ड फ़्रैगमेंट को डिस्पैच नहीं किया जा रहा था. ऐसा तब हो रहा था, जब होस्ट ने प्रोवाइडर कॉलबैक इंटरफ़ेस (OnConfigurationChangedProvider,OnMultiWindowModeChangedProvider,OnTrimMemoryProvider,OnPictureInPictureModeChangedProvider) लागू नहीं किया था और उसके डेप्रिकेट किए गए डिस्पैच फ़ंक्शन को कॉल किया जा रहा था. (I9b380)
वर्शन 1.5.3
21 सितंबर, 2022
androidx.fragment:fragment:1.5.3, androidx.fragment:fragment-ktx:1.5.3, और androidx.fragment:fragment-testing:1.5.3 रिलीज़ किए जाते हैं. वर्शन 1.5.3 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- हमने उस गड़बड़ी को ठीक किया है जिसकी वजह से, बैक स्टैक पर मौजूद फ़्रैगमेंट को
onMultiWindowModeChanged(),onPictureInPictureModeChanged(),onLowMemory(), औरonConfigurationChanged()कॉलबैक मिलते थे. (I34581, I8dfe6, b/242570955) - नेस्ट किए गए चाइल्ड फ़्रैगमेंट को अब एक से ज़्यादा
onMultiWindowModeChanged(),onPictureInPictureModeChanged(),onLowMemory()याonConfigurationChanged()कॉलबैक नहीं मिलेंगे. (I690b3, Id0096, If9d6b, I2cba2)
संस्करण 1.5.2
10 अगस्त, 2022
androidx.fragment:fragment:1.5.2, androidx.fragment:fragment-ktx:1.5.2, और androidx.fragment:fragment-testing:1.5.2 रिलीज़ किए जाते हैं. वर्शन 1.5.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें एक ही समय पर
popBackStack()औरreplace()लेन-देन करने से, बाहर निकलने वाले फ़्रैगमेंट गलतAnimation/Animatorको चला सकते थे. (Ib1c07, b/214835303)
संस्करण 1.5.1
27 जुलाई, 2022
androidx.fragment:fragment:1.5.1, androidx.fragment:fragment-ktx:1.5.1, और androidx.fragment:fragment-testing:1.5.1 रिलीज़ किए जाते हैं. वर्शन 1.5.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
DialogFragmentCallbacksDetectorमें रिग्रेशन की समस्या को ठीक किया गया है. इस समस्या की वजह से, AGP 7.4 के साथ बंडल किए गए लिंट वर्शन का इस्तेमाल करने पर, लिंट क्रैश हो जाता था. (b/237567009)
डिपेंडेंसी अपडेट
- Fragment लाइब्रेरी अब Lifecycle
2.5.1पर निर्भर करती है. (Id204c) - अब फ़्रैगमेंट लाइब्रेरी, ऐक्टिविटी
1.5.1पर निर्भर करती है. (I10f07)
वर्शन 1.5.0
29 जून, 2022
androidx.fragment:fragment:1.5.0, androidx.fragment:fragment-ktx:1.5.0, और androidx.fragment:fragment-testing:1.5.0 रिलीज़ किए जाते हैं. वर्शन 1.5.0 में ये बदलाव शामिल हैं.
1.4.0 के बाद के मुख्य बदलाव
- CreationExtras इंटिग्रेशन -
Fragmentअब Lifecycle2.5.0केCreationExtrasके ज़रिए, स्टेटलेसViewModelProvider.Factoryउपलब्ध करा सकता है. - कॉम्पोनेंट डायलॉग इंटिग्रेशन -
DialogFragmentअबComponentDialogका इस्तेमाल करता है.onCreateDialog()से मिले डिफ़ॉल्ट डायलॉग के तौर पर, Activity1.5.0का इस्तेमाल किया जाता है. - सेव किए गए इंस्टेंस की स्थिति को फिर से व्यवस्थित करना - फ़्रैगमेंट, इंस्टेंस की स्थिति को सेव करने के तरीके में बदलाव करने लगे हैं. इससे यह साफ़ तौर पर पता लगाने में मदद मिलती है कि फ़्रैगमेंट में कौनसी स्थिति सेव की गई है और स्थिति का सोर्स क्या है. मौजूदा बदलावों में ये शामिल हैं:
FragmentManagerअब अपने सेव किए गए इंस्टेंस की स्थिति को सीधे कस्टमParcelableमें सेव करने के बजाय,Bundleमें सेव करता है.Fragment Result APIsके ज़रिए सेट किए गए ऐसे नतीजे जिन्हें अब तक डिलीवर नहीं किया गया है उन्हें अबFragmentManagerकी इंटरनल स्थिति से अलग सेव किया जाता है.- अब हर फ़्रैगमेंट से जुड़ी स्थिति को
FragmentManagerकी इंटरनल स्थिति से अलग सेव किया जाता है. इससे, किसी फ़्रैगमेंट से जुड़ी सेव की गई स्थिति की मात्रा कोFragmentकी डीबग लॉगिंग में मौजूद यूनीक आईडी से जोड़ा जा सकता है.
अन्य बदलाव
FragmentStrictModeअब तीसरे पक्ष के निजी फ़्रैगमेंट को, क्लास के नाम के साथallowViolation()का इस्तेमाल करके, उल्लंघन से जुड़ी कुछ खास पाबंदियों को बायपास करने की सुविधा देता है.- आपकी गतिविधि के
ActionBarको मेन्यू देने के लिए, Fragment API का इस्तेमाल अब नहीं किया जा सकता. ऐक्टिविटी1.4.0में जोड़े गएMenuHostऔरMenuProviderएपीआई, टेस्ट किए जा सकने वाले और लाइफ़साइकल के बारे में जानकारी देने वाले एपीआई की सतह उपलब्ध कराते हैं. फ़्रैगमेंट को इनका इस्तेमाल करना चाहिए.
वर्शन 1.5.0-rc01
11 मई, 2022
androidx.fragment:fragment:1.5.0-rc01, androidx.fragment:fragment-ktx:1.5.0-rc01, और androidx.fragment:fragment-testing:1.5.0-rc01 रिलीज़ किए जाते हैं. वर्शन 1.5.0-rc01 में ये बदलाव शामिल हैं.
सेव किए गए इंस्टेंस की स्थिति को फिर से व्यवस्थित करना
- अब हर फ़्रैगमेंट से जुड़ी स्थिति को
FragmentManagerकी इंटरनल स्थिति से अलग सेव किया जाता है. इससे, किसी फ़्रैगमेंट से जुड़ी सेव की गई स्थिति की मात्रा को फ़्रैगमेंट की डीबग लॉगिंग में मौजूद यूनीक आईडी से जोड़ा जा सकता है. (a153e0, b/207158202)
वर्शन 1.5.0-beta01
20 अप्रैल, 2022
androidx.fragment:fragment:1.5.0-beta01, androidx.fragment:fragment-ktx:1.5.0-beta01, और androidx.fragment:fragment-testing:1.5.0-beta01 रिलीज़ किए जाते हैं. वर्शन 1.5.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
DialogFragmentने एक नयाdismissNowतरीका जोड़ा है. यहshowNowफ़ंक्शन के साथ समानता बनाए रखने के लिए,commitNowका इस्तेमाल करता है. ध्यान दें कि इससेDialogतुरंत खारिज नहीं होगा. इससे सिर्फ़Dialogकी स्थिति को सिंक्रोनस तरीके से अपडेट किया जाएगा.FragmentManager(I15c36, b/72644830)
सेव किए गए इंस्टेंस की स्थिति को फिर से व्यवस्थित करना
FragmentManagerअब अपने सेव किए गए इंस्टेंस की स्थिति को सीधे कस्टमParcelableमें सेव करने के बजाय,Bundleमें सेव करता है. यह इस बारे में ज़्यादा पारदर्शिता लाने का पहला कदम है कि फ़्रैगमेंट में क्या सेव किया जा रहा है. (I93807, b/207158202)- Fragment Result APIs के ज़रिए सेट किए गए ऐसे नतीजे जिन्हें अब तक डिलीवर नहीं किया गया है उन्हें अब
FragmentManagerकी इंटरनल स्थिति से अलग सेव किया जाता है. इससे यह पता चलेगा कि सेव किए गए इंस्टेंस की स्थिति के हिस्से के तौर पर, कौनसे नतीजे सेव किए जा रहे हैं. (I6ea12, b/207158202)
वर्शन 1.5.0-alpha05
6 अप्रैल, 2022
androidx.fragment:fragment:1.5.0-alpha05, androidx.fragment:fragment-ktx:1.5.0-alpha05, और androidx.fragment:fragment-testing:1.5.0-alpha05 रिलीज़ किए जाते हैं. वर्शन 1.5.0-alpha05 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
FragmentकेsetHasOptionsMenu()का अब इस्तेमाल नहीं किया जा सकता. Fragment1.5.0-alpha04रिलीज़ नोट के मुताबिक, मेन्यू और उनके मेन्यू आइटम को मैनेज करने के लिए, नए मेन्यू एपीआई का इस्तेमाल किया जाना चाहिए. (I7b4b4, b/226438239)
वर्शन 1.5.0-alpha04
23 मार्च, 2022
androidx.fragment:fragment:1.5.0-alpha04, androidx.fragment:fragment-ktx:1.5.0-alpha04, और androidx.fragment:fragment-testing:1.5.0-alpha04 रिलीज़ किए जाते हैं. वर्शन 1.5.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- आपकी गतिविधि के
ActionBarको मेन्यू उपलब्ध कराने के लिए, फ़्रैगमेंट एपीआई का इस्तेमाल बंद कर दिया गया है. ऐसा इसलिए, क्योंकि ये एपीआई आपके फ़्रैगमेंट को आपकी गतिविधि से जोड़ते हैं और इन्हें अलग से टेस्ट नहीं किया जा सकता. ऐक्टिविटी1.4.0-alpha01में जोड़े गएMenuHostऔरMenuProviderएपीआई, टेस्ट किए जा सकने वाले और लाइफ़साइकल के बारे में जानकारी देने वाले एपीआई की सतह उपलब्ध कराते हैं. फ़्रैगमेंट को इनका इस्तेमाल करना चाहिए. (I50a59, I20758)
गड़बड़ियां ठीक की गईं
SavedStateViewFactoryअबCreationExtrasका इस्तेमाल करने की सुविधा देता है. भले ही, इसेSavedStateRegistryOwnerके साथ शुरू किया गया हो. अगर एक्सट्रा दिए जाते हैं, तो शुरू किए गए आर्ग्युमेंट को अनदेखा कर दिया जाता है. (I6c43b, b/224844583)
वर्शन 1.5.0-alpha03
23 फ़रवरी, 2022
androidx.fragment:fragment:1.5.0-alpha03, androidx.fragment:fragment-ktx:1.5.0-alpha03, और androidx.fragment:fragment-testing:1.5.0-alpha03 रिलीज़ किए जाते हैं. वर्शन 1.5.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- अब
by viewModels()औरby activityViewModels()फ़ंक्शन मेंCreationExtrasको पास किया जा सकता है. (Ibefe7, b/217601110)
व्यवहार में बदलाव
DialogFragmentअबComponentDialogका इस्तेमाल,onCreateDialog()से मिले डिफ़ॉल्ट डायलॉग के तौर पर करता है. (If3784, b/217618170)
वर्शन 1.5.0-alpha02
9 फ़रवरी, 2022
androidx.fragment:fragment:1.5.0-alpha02, androidx.fragment:fragment-ktx:1.5.0-alpha02, और androidx.fragment:fragment-testing:1.5.0-alpha02 रिलीज़ किए जाते हैं. वर्शन 1.5.0-alpha02 में ये बदलाव शामिल हैं.
नई सुविधाएं
FragmentStrictModeअब तीसरे पक्ष के निजी फ़्रैगमेंट को, क्लास के नाम के साथallowViolation()का इस्तेमाल करके, उल्लंघन से जुड़ी कुछ खास पाबंदियों को बायपास करने की सुविधा देता है. (I8f678)
वर्शन 1.5.0-alpha01
26 जनवरी, 2022
androidx.fragment:fragment:1.5.0-alpha01, androidx.fragment:fragment-ktx:1.5.0-alpha01, और androidx.fragment:fragment-testing:1.5.0-alpha01 रिलीज़ किए जाते हैं. वर्शन 1.5.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
Fragmentको अब ViewModel CreationExtras के साथ इंटिग्रेट किया गया है. इसे Lifecycle2.5.0-alpha01के हिस्से के तौर पर पेश किया गया था. (I3060b, b/207012585)
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट
1.4.1से:FragmentContainerViewअब ऐसी स्थिति में कोई गैर-कानूनी स्टेट एक्सेप्शन नहीं दिखाता है, जब एक्सएमएल से जनरेट किए गए व्यू आईडी में नेगेटिव वैल्यू होती हैं. (Ic185b, b/213086140) - फ़्रैगमेंट
1.4.1से:by viewModels()लेज़ी फ़ंक्शन के साथ कस्टमownerProducerलैम्डा का इस्तेमाल करने पर, अब यह उस मालिक केdefaultViewModelProviderFactoryका इस्तेमाल करेगा. ऐसा तब होगा, जब कस्टमViewModelProvider.Factoryउपलब्ध न हो. इसके बजाय, यह हमेशा फ़्रैगमेंट के फ़ैक्ट्री का इस्तेमाल करेगा. (I56170, b/214106513) FragmentकेregisterForActivityResult()कॉलबैक से पहली बारViewModelऐक्सेस करने पर होने वाली क्रैश की समस्या को ठीक किया गया है. (Iea2b3)
वर्शन 1.4
वर्शन 1.4.1
26 जनवरी, 2022
androidx.fragment:fragment:1.4.1, androidx.fragment:fragment-ktx:1.4.1, और androidx.fragment:fragment-testing:1.4.1 रिलीज़ किए जाते हैं. वर्शन 1.4.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
FragmentContainerViewअब एक्सएमएल से जनरेट किए गए व्यू आईडी में नेगेटिव वैल्यू होने पर, अमान्य स्थिति वाली गड़बड़ी नहीं दिखाता है. (Ic185b, b/213086140)by viewModels()lazy फ़ंक्शन के साथ कस्टमownerProducerलैम्डा का इस्तेमाल करने पर, अब यह हमेशा फ़्रैगमेंट के फ़ैक्ट्री का इस्तेमाल करने के बजाय, उस मालिक केdefaultViewModelProviderFactoryका इस्तेमाल करेगा. ऐसा तब होगा, जब कस्टमViewModelProvider.Factoryउपलब्ध न हो. (I56170, b/214106513)
वर्शन 1.4.0
17 नवंबर, 2021
androidx.fragment:fragment:1.4.0, androidx.fragment:fragment-ktx:1.4.0, और androidx.fragment:fragment-testing:1.4.0 रिलीज़ किए जाते हैं. वर्शन 1.4.0 में ये बदलाव शामिल हैं.
1.3.0 के बाद हुए अहम बदलाव
FragmentStrictModeएपीआई, रनटाइम जांच की सुविधा देते हैं. इससे यह पुष्टि की जा सकती है कि आपका ऐप्लिकेशन या जिन लाइब्रेरी पर आपका ऐप्लिकेशन निर्भर करता है वे फ़्रैगमेंट के बंद किए जा चुके एपीआई को कॉल नहीं कर रही हैं. उल्लंघन का पता चलने पर, लॉग मैसेज प्रिंट किया जा सकता है, कस्टम लिसनर को ट्रिगर किया जा सकता है या ऐप्लिकेशन को क्रैश किया जा सकता है.FragmentStrictMode.Policyयह कंट्रोल करता है कि कौनसी जांचें चालू हैं और कौनसे “जुर्माने” ट्रिगर किए गए हैं. इसे नईsetStrictModePolicy()तरीके सेFragmentManagerपर सेट किया जा सकता है. यह नीति उसFragmentManagerपर लागू होती है. साथ ही, यह उन सभी चाइल्ड फ़्रैगमेंट मैनेजर पर भी लागू होती है जो अपनी यूनीक नीति सेट नहीं करते हैं. फ़्रैगमेंट के लिए StrictMode देखें.FragmentContainerViewअबgetFragment()मेथड उपलब्ध कराता है. यह मेथड, कंटेनर में सबसे हाल ही में जोड़े गए फ़्रैगमेंट को दिखाता है. यहfindFragmentById()के आईडी के साथFragmentContainerViewके तौर पर एक ही लॉजिक का इस्तेमाल करता है. हालांकि, इससे कॉल को चेन करने की अनुमति मिलती है.val navController = binding.container.getFragment<NavHostFragment>().navControllerFragmentScenarioअबCloseableलागू करता है. इससे, Kotlin केuseतरीके या try-with-resources के साथ इसका इस्तेमाल किया जा सकता है.जोड़ा गया
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}यह तय करने के लिए कि फ़्रैगमेंट ट्रांज़िशन में, आपकी थीम से लिया गया स्टैंडर्ड ऐक्टिविटी-ट्रांज़िशन ऐनिमेशन चालू करना है या नहीं.FragmentManager.enableNewStateManager(boolean)के एक्सपेरिमेंटल एपीआई को हटा दिया गया है. अब नया स्टेट मैनेजर ही उपलब्ध है.
एक से ज़्यादा बैक स्टैक
FragmentManager, फ़्रैगमेंट ट्रांज़ैक्शन से बना बैक स्टैक बनाए रखता है. इसमें addToBackStack() का इस्तेमाल किया जाता है. इससे आपको उन लेन-देन को पॉप करने और पिछली स्थिति पर वापस जाने की सुविधा मिलती है. इसके लिए, फ़्रैगमेंट की स्थिति सेव करने के तरीकों का इस्तेमाल किया जाता है, ताकि आपके फ़्रैगमेंट अपनी स्थिति को सही तरीके से वापस ला सकें.
इस रिलीज़ में, इन तरीकों को और बेहतर बनाया गया है. इसके लिए, तीन नए FragmentManager एपीआई उपलब्ध कराए गए हैं: saveBackStack(String name), restoreBackStack(String name), और clearBackStack(String name). ये एपीआई, addToBackStack() की तरह ही name का इस्तेमाल करते हैं. इससे FragmentTransaction की स्थिति और उन लेन-देन में जोड़े गए हर फ़्रैगमेंट की स्थिति को सेव किया जा सकता है. साथ ही, बाद में उन लेन-देन और उनके फ़्रैगमेंट को उनकी स्थिति के साथ वापस लाया जा सकता है. इससे, मौजूदा पिछली गतिविधियों को सेव करके और सेव की गई पिछली गतिविधियों को वापस लाकर, कई पिछली गतिविधियों के बीच आसानी से ‘स्विच’ किया जा सकता है.
saveBackStack(), popBackStack() की तरह ही काम करता है. यह एसिंक्रोनस होता है. साथ ही, इससे उस नाम के सभी फ़्रैगमेंट ट्रांज़ैक्शन वापस हो जाते हैं (‘पॉप’ हो जाते हैं). साथ ही, जोड़े गए सभी फ़्रैगमेंट मिट जाते हैं और हट जाते हैं. हालांकि, यह कुछ अहम मामलों में अलग होता है:
saveBackStack()हमेशा शामिल होता है.popBackStack()के उलट, अगर बैक स्टैक में तय किया गया नाम नहीं मिलता है या शून्य नाम दिया जाता है, तोsaveBackStack()बैक स्टैक पर सभी लेन-देन दिखाएगा. हालांकि, अगर आपने पहलेaddToBackStack()का इस्तेमाल करके, उसी नाम से फ़्रैगमेंट लेन-देन नहीं किया है, तोsaveBackStack()कुछ नहीं करेगा.- उन लेन-देन से जोड़े गए सभी फ़्रैगमेंट की स्थिति सेव की जाती है. इसका मतलब है कि हर फ़्रैगमेंट की व्यू स्टेट सेव की जाती है, हर फ़्रैगमेंट का
onSaveInstanceState()कॉल किया जाता है और उस स्टेट को वापस लाया जाता है. साथ ही, उन फ़्रैगमेंट से जुड़े किसी भीViewModelइंस्टेंस को बनाए रखा जाता है और उन परonCleared()को नहीं कॉल किया जाता है.
saveBackStack() के साथ इस्तेमाल किए जा सकने वाले फ़्रैगमेंट लेन-देन को कुछ शर्तें पूरी करनी होंगी:
- हर फ़्रैगमेंट लेन-देन में
setReorderingAllowed(true)का इस्तेमाल किया जाना चाहिए, ताकि लेन-देन को एक ही एटॉमिक ऑपरेशन के तौर पर वापस लाया जा सके. - सेव किए गए लेन-देन का सेट, खुद में शामिल होना चाहिए. इसका मतलब है कि उन्हें लेन-देन के उस सेट के बाहर के किसी भी फ़्रैगमेंट का साफ़ तौर पर रेफ़रंस नहीं देना चाहिए. इससे यह पक्का किया जा सकेगा कि उन्हें बाद में कभी भी रीस्टोर किया जा सकता है. भले ही, इस दौरान पिछली गतिविधियों में कोई भी बदलाव किया गया हो.
- सेव किए गए किसी भी फ़्रैगमेंट को बनाए रखा गया फ़्रैगमेंट नहीं होना चाहिए. साथ ही, उसके ट्रांज़िटिव सेट में बनाए रखा गया कोई भी चाइल्ड फ़्रैगमेंट नहीं होना चाहिए. इससे यह पक्का किया जा सकेगा कि पिछली गतिविधियां सेव होने के बाद,
FragmentManagerसेव किए गए फ़्रैगमेंट के कोई भी रेफ़रंस न दिखाए.
saveBackStack(), restoreBackStack(), और clearBackStack() की तरह ही, अगर आपने पहले saveBackStack() को उसी नाम से कॉल नहीं किया है, तो ये दोनों फ़ंक्शन कुछ नहीं करेंगे. restoreBackStack(), पहले से सेव की गई पिछली गतिविधियां को वापस लाता है, जबकि clearBackStack(), पहले से सेव की गई पिछली गतिविधियां को मिटाता है.
ज़्यादा जानकारी के लिए, एक से ज़्यादा बैक स्टैक: ज़्यादा जानकारी लेख पढ़ें.
वर्शन 1.4.0-rc01
3 नवंबर, 2021
androidx.fragment:fragment:1.4.0-rc01 को Fragment 1.4.0-beta01 के बाद से बिना किसी बदलाव के रिलीज़ किया गया है. वर्शन 1.4.0-rc01 में ये बदलाव शामिल हैं.
वर्शन 1.4.0-beta01
27 अक्टूबर, 2021
androidx.fragment:fragment:1.4.0-beta01, androidx.fragment:fragment-ktx:1.4.0-beta01, और androidx.fragment:fragment-testing:1.4.0-beta01 रिलीज़ किए जाते हैं. वर्शन 1.4.0-beta01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- अब पैरंट फ़्रैगमेंट, अपने कॉलबैक को लॉन्च करने से पहले, अपनी पूरी हैरारकी में
onHiddenChanged()को डिसपैच करेंगे. (Iedc20, b/77504618) - अब कीबोर्ड अपने-आप बंद हो जाएगा. ऐसा तब होगा, जब खुले हुए कीबोर्ड वाले फ़्रैगमेंट से रीसाइकलर व्यू वाले फ़्रैगमेंट पर जाया जाएगा. (I8b842, b/196852211)
DialogFragmentअबshow(),showNow()याdismiss()को कॉल करने पर होने वाले सभी लेन-देन के लिएsetReorderingAllowed(true)का इस्तेमाल करता है. (Ie2c14)DetachAndAttachFragmentInSameFragmentTransactionकी बहुत लंबी लिंट चेतावनी को छोटा करकेDetachAndAttachSameFragmentकर दिया गया है. (e9eca3)
वर्शन 1.4.0-alpha10
29 सितंबर, 2021
androidx.fragment:fragment:1.4.0-alpha10, androidx.fragment:fragment-ktx:1.4.0-alpha10, और androidx.fragment:fragment-testing:1.4.0-alpha10 रिलीज़ किए जाते हैं. वर्शन 1.4.0-alpha10 में ये बदलाव शामिल हैं.
लिंट
FragmentTransactionमें मौजूद एक हीFragmentपरdetach()औरattach(), दोनों को कॉल करने का पता लगाने के लिए,DetachAndAttachFragmentInSameFragmentTransactionलिंट चेतावनी जोड़ी गई है. ऐसा इसलिए, क्योंकि एक ही लेन-देन में ये दोनों कार्रवाइयां एक-दूसरे को रद्द कर देती हैं. इसलिए, इन्हें अलग-अलग लेन-देन में बांटना ज़रूरी है, ताकि ये कार्रवाइयां सही तरीके से हो सकें. (aosp/1832956, b/200867930)MenuHostकेaddMenuProviderएपीआई का इस्तेमाल करते समय, फ़्रैगमेंट के व्यू लाइफ़साइकल में फ़्रैगमेंट लाइफ़साइकल के इस्तेमाल को ठीक करने के लिए,FragmentAddMenuProviderलिंट की गड़बड़ी जोड़ी गई है. (aosp/1830457, b/200326272)
दस्तावेज़ से जुड़े अपडेट
- Activity Result APIs के ज़रिए मैनेज किए जाने वाले एपीआई के लिए, बंद होने से जुड़ी सूचना में ज़्यादा जानकारी जोड़ी गई है. ये एपीआई हैं:
startActivityForResult,startIntentSenderForResult,onActivityResult,requestPermissions, औरonRequestPermissionsResult. (cce80f) onActivityCreated()औरDialogFragment, दोनों के लिएonActivityCreated()को बंद करने से जुड़ी सूचना को ज़्यादा जानकारी के साथ बड़ा कर दिया गया है.Fragment(224db4)
वर्शन 1.4.0-alpha09
15 सितंबर, 2021
androidx.fragment:fragment:1.4.0-alpha09, androidx.fragment:fragment-ktx:1.4.0-alpha09, और androidx.fragment:fragment-testing:1.4.0-alpha09 रिलीज़ किए जाते हैं. वर्शन 1.4.0-alpha09 में ये बदलाव शामिल हैं.
नई सुविधाएं
- अब
clearBackStack(name)को कॉल करके,saveBackStack(name)के साथ पहले से सेव की गई किसी भी स्थिति को मिटाया जा सकता है. (I70cd7)
एपीआई में हुए बदलाव
FragmentContainerViewक्लास को Kotlin में फिर से लिखा गया है. इससे यह पक्का होता है किgetFragmentफ़ंक्शन, नल वैल्यू को सही तरीके से हैंडल करेगा. (If694a, b/189629145)- FragmentStrictMode को अब Kotlin में लिखा गया है (I11767, b/199183506)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक कर दिया गया है जिसमें
setReorderingAllowed(true)की मदद से जोड़े गए फ़्रैगमेंट की स्थिति को ठीक से साफ़ नहीं किया जाता था. ऐसा तब होता था, जब फ़्रैगमेंट को जोड़े जाने के तुरंत बाद, लंबित लेन-देन पूरे होने से पहले ही हटा दिया जाता था. (I8ccb8)
वर्शन 1.4.0-alpha08
1 सितंबर, 2021
androidx.fragment:fragment:1.4.0-alpha08, androidx.fragment:fragment-ktx:1.4.0-alpha08, और androidx.fragment:fragment-testing:1.4.0-alpha08 रिलीज़ किए जाते हैं. वर्शन 1.4.0-alpha08 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
UseRequireInsteadOfGetLint check की सुविधा को बेहतर बनाया गया है, ताकि फ़ालतू कोष्ठकों को बेहतर तरीके से मैनेज किया जा सके. (I2d865)UseGetLayoutInflaterलिंट चेक को बेहतर बनाया गया है, ताकि ज़्यादा से ज़्यादा मुश्किल मामलों को हैंडल किया जा सके. (Ie5423)
वर्शन 1.4.0-alpha07
18 अगस्त, 2021
androidx.fragment:fragment:1.4.0-alpha07, androidx.fragment:fragment-ktx:1.4.0-alpha07, और androidx.fragment:fragment-testing:1.4.0-alpha07 में कोई खास बदलाव नहीं किया गया है. वर्शन 1.4.0-alpha07 में ये बदलाव शामिल हैं.
वर्शन 1.4.0-alpha06
4 अगस्त, 2021
androidx.fragment:fragment:1.4.0-alpha06, androidx.fragment:fragment-ktx:1.4.0-alpha06, और androidx.fragment:fragment-testing:1.4.0-alpha06 रिलीज़ किए जाते हैं. वर्शन 1.4.0-alpha06 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- तेज़ी से बैक स्टैक के बीच स्विच करने पर, कई बैक स्टैक से जुड़ी समस्या को ठीक किया गया है. इससे,
IllegalStateExceptionको वापस लाते समयIllegalStateExceptionदिखता था या फ़्रैगमेंट की दूसरी कॉपी दिखती थी.FragmentTransaction(I9039f) FragmentManagerके ज़रिए पहले सेव की गई स्थिति की कॉपी कोFragmentManagerके ज़रिए स्थिति को वापस लाने के बाद भी बनाए रखने की समस्या को ठीक किया गया है.saveBackStack()(Ied212)show(FragmentTransaction, String)तरीके से DialogFragment को खास तौर पर जोड़ने पर, स्थिति सेव होने के बाद इसे कॉल करने पर,dismissAllowingStateLoss()तरीके काDialogFragmentअब क्रैश नहीं होता. (I84422)
वर्शन 1.4.0-alpha05
21 जुलाई, 2021
androidx.fragment:fragment:1.4.0-alpha05, androidx.fragment:fragment-ktx:1.4.0-alpha05, और androidx.fragment:fragment-testing:1.4.0-alpha05 रिलीज़ किए जाते हैं. वर्शन 1.4.0-alpha05 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट
1.3.6से: रूट व्यू मेंtransitionGroup=”true”सेट होने पर,hide()का इस्तेमाल करते समय फ़्रैगमेंट का व्यू अबGONEपर सेट हो गया है. (aosp/1766655, b/193603427) - फ़्रैगमेंट
1.3.6से:FragmentActivityअब हमेशा सेव की गई स्थिति को अनलॉक करता है. ऐसा लाइफ़साइकल के पहले ऑपरेशन के तौर पर किया जाता है. यह लाइफ़साइकल के उन कॉलबैक को बदल देता है. (I6db7a)
डिपेंडेंसी अपडेट
- Fragment
1.3.6से: अब फ़्रैगमेंट, Activity1.2.4पर निर्भर करता है (I3a66c)
वर्शन 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का इस्तेमाल करता है.saveAllState()औरrestoreSavedState()तरीकों को भीFragmentControllerमें बंद कर दिया गया है. अगर आपकोFragmentActivityके बाहर फ़्रैगमेंट होस्ट करने के लिएFragmentControllerका इस्तेमाल करना है, तो आपकोFragmentHostCallbacksमेंSavedStateRegistryOwnerलागू करना होगा. (Iba68e, b/188734238)
गड़बड़ियां ठीक की गईं
- एक समस्या को ठीक किया गया है. इसमें कई बैक स्टैक के साथ काम करने के लिए,
saveBackStack()को कॉल करने पर गड़बड़ी होती थी. ऐसा तब होता था, जबFragmentTransactionकोreplace()का इस्तेमाल करके चलाया जाता था. (I73137) - हमने एक
NullPointerExceptionठीक किया है. यह समस्या, सेव किए गए बैक स्टैक को मैन्युअल तरीके से वापस लाने के बाद होती थी. इस बैक स्टैक में कई लेन-देन शामिल होते थे. ऐसा तब होता था, जबrestoreBackStack()API का इस्तेमाल करके एक से ज़्यादा बैक स्टैक को सपोर्ट किया जाता था. इस अपडेट में, एक समस्या को भी ठीक किया गया है. इस समस्या में, सभी लेन-देन के लिएsetReorderingAllowed(true)की जांच नहीं की जा रही थी. (I8c593) - उस समस्या को ठीक किया गया है जिसमें
FragmentManager, फ़्रैगमेंट के पहले से सेव किए गए स्टेटस को गलत तरीके से वापस लाता रहता था. ऐसा तब होता था, जब उन फ़्रैगमेंट कोFragmentManagerसे हटा दिया जाता था. इस वजह से, सेव किया गया स्टेटस समय के साथ बढ़ता रहता था. (I1fb8e)
वर्शन 1.4.0-alpha03
16 जून, 2021
androidx.fragment:fragment:1.4.0-alpha03, androidx.fragment:fragment-ktx:1.4.0-alpha03, और androidx.fragment:fragment-testing:1.4.0-alpha03 रिलीज़ किए जाते हैं. वर्शन 1.4.0-alpha03 में ये बदलाव शामिल हैं.
नई सुविधाएं
- सभी Fragment StrictMode
Violationक्लास को अपडेट कर दिया गया है. इनमें गड़बड़ी के बारे में ज़्यादा जानकारी देने वाले मैसेज शामिल किए गए हैं. इनसे उल्लंघन के बारे में ज़्यादा जानकारी मिलती है. (b/187871638)FragmentTagUsageViolationमें अब गड़बड़ी के बारे में ज़्यादा जानकारी देने वाला मैसेज शामिल है. इसमें उस पैरंट कंटेनर की जानकारी भी शामिल है जिसमें फ़्रैगमेंट जोड़ा जाना था. (Ic33a7)WrongFragmentContainerViolationमें अब गड़बड़ी के बारे में ज़्यादा जानकारी वाला मैसेज दिखता है. इसमें उस कंटेनर की जानकारी भी शामिल होती है जिसमें फ़्रैगमेंट जोड़ा जा रहा था. (Ib55f8)TargetFragmentUsageViolationके इस्तेमाल के उदाहरणों के लिए, अब गड़बड़ी के बारे में ज़्यादा जानकारी देने वाले मैसेज उपलब्ध हैं. इनमें उल्लंघन करने वाले फ़्रैगमेंट और उससे जुड़ी अन्य जानकारी शामिल है. (Icc6ac)RetainInstanceUsageViolationको बढ़ाने वाली क्लास में अब गड़बड़ी की ज़्यादा जानकारी वाले मैसेज शामिल हैं. इनमें उल्लंघन करने वाला फ़्रैगमेंट भी शामिल है. (I6bd55)FragmentReuseViolationमें अब गड़बड़ी के बारे में ज़्यादा जानकारी देने वाला मैसेज दिखता है. इसमें फ़्रैगमेंट का पिछला आईडी भी शामिल होता है. (I28ce2)SetUserVisibleHintViolationमें अब गड़बड़ी के बारे में ज़्यादा जानकारी देने वाला मैसेज दिखता है. इसमें यह भी बताया जाता है कि उपयोगकर्ता को दिखने वाला हिंट किस पर सेट किया जा रहा था. (Ib2d5f)
व्यवहार में बदलाव
FragmentContainerViewपरfitsSystemWindowsको कॉल करने से जुड़ी पाबंदी हटा दी गई है. अब इससे आपका ऐप्लिकेशन क्रैश नहीं होगा. (6b8ddd, b/190622202)
गड़बड़ियां ठीक की गईं
- Fragment
1.3.5: aosp/1679887 ने Fragment1.3.4में शेयर किए गए एलिमेंट के ट्रांज़िशन में हुई रिग्रेशन की समस्या को ठीक किया. अब फ़्रैगमेंट, ट्रांज़िशन ग्रुप को सही तरीके से हैंडल करते हैं. इन्हें सीधे तौर परtransitionGroup="true"के ज़रिए या किसीtransitionNameयाbackgroundके ज़रिए सेट किया जाता है. साथ ही, शेयर किए गए एलिमेंट अबIndexOutOfBoundsExceptionनहीं दिखाएंगे. (I16484, b/188679569, b/188969304) - किसी फ़्रैगमेंट को हटाने के लिए छिपाने की कोशिश करने पर,
FragmentManagerअब क्रैश नहीं होगा. (I573dd, b/183634730) - टॉप लेवल के वैरिएबल का आकलन करते समय,
OnCreateDialogIncorrectCallbackलिंट चेक अब क्रैश नहीं होगा. (0a9efa, b/189967522)
वर्शन 1.4.0-alpha02
2 जून, 2021
androidx.fragment:fragment:1.4.0-alpha02, androidx.fragment:fragment-ktx:1.4.0-alpha02, और androidx.fragment:fragment-testing:1.4.0-alpha02 रिलीज़ किए जाते हैं. वर्शन 1.4.0-alpha02 में ये बदलाव शामिल हैं.
नई सुविधाएं
FragmentStrictModeअब हमेशा उल्लंघनों को लॉग करेगा. ऐसा तब होगा, जबFragmentManagerके ज़रिए लॉगिंग की सुविधा चालू की गई हो. भले ही, स्ट्रिक्ट मोड की मौजूदा नीति का इस्तेमाल किया जा रहा हो. (I02df6, b/187872638)FragmentStrictModeअब स्ट्रिक्ट मोडViolationसे कुछFragmentक्लास को बाहर रखने की सुविधा देता है. इससे उन क्लास पर कोई जुर्माना नहीं लगता. (Ib4e5d, b/184786736)FragmentStrictModeViolationक्लास को बड़ा कर दिया गया है, ताकि हर उल्लंघन के आधार पर स्ट्रक्चर की जानकारी जोड़ी जा सके. इससे आपको यह पुष्टि करने में मदद मिलती है कि किस वजह से उल्लंघन हुआ है. साथ ही, उल्लंघन करने वाले फ़्रैगमेंट (If5118, b/187871150) के बारे में भी पता चलता है. हरViolationमें यह जानकारी शामिल होती है:WrongFragmentContainerViolationमें अब वहViewGroupशामिल है जिसेFragmentमें जोड़ने की कोशिश की जा रही थी. (I83c75, b/187871150)TargetFragmentUsageViolationकोSetTargetFragmentUsageViolation,GetTargetFragmentUsageViolation, औरGetTargetFragmentRequestCodeUsageViolationमें बांटा गया है.SetTargetFragmentUsageViolationमें टारगेट फ़्रैगमेंट और अनुरोध कोड शामिल है. (I741b4, b/187871150)SetUserVisibleHintViolationमें अबsetUserVisibleHint()में पास की गई बूलियन वैल्यू शामिल है. (I00585, b/187871150)FragmentTagUsageViolationमें अब वह ViewGroup शामिल है जिसमें<fragment>टैग, फ़्रैगमेंट को बड़ा करने की कोशिश कर रहा था.(I5dbbc, b/187871150)FragmentReuseViolationमें अबFragmentके पिछले इंस्टेंस का यूनीक आईडी शामिल है. इस इंस्टेंस की वजह से उल्लंघन हुआ था. (I0544d, b/187871150)RetainInstanceUsageViolationअब ऐब्स्ट्रैक्ट है और इसकी दो सबक्लास हैं,SetRetainInstanceUsageViolationऔरGetRetainInstanceUsageViolation. ये दोनों, उल्लंघन के टाइप के दो मामलों को दिखाती हैं. (Ic81e5, b/187871150)
व्यवहार में बदलाव
FragmentContainerViewअबfitsSystemWindowएट्रिब्यूट को प्रोग्राम के हिसाब से या एक्सएमएल के ज़रिए बदलने की कोशिश करने पर, अपवाद दिखाता है. हर फ़्रैगमेंट के व्यू को इनसेट मैनेज करने चाहिए. (Ie6651, b/187304502)
वर्शन 1.4.0-alpha01
18 मई, 2021
androidx.fragment:fragment:1.4.0-alpha01, androidx.fragment:fragment-ktx:1.4.0-alpha01, और androidx.fragment:fragment-testing:1.4.0-alpha01 रिलीज़ किए जाते हैं. वर्शन 1.4.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
FragmentContainerViewअबgetFragment()मेथड उपलब्ध कराता है. यह मेथड, कंटेनर में सबसे हाल ही में जोड़े गए फ़्रैगमेंट को दिखाता है. यहfindFragmentById()के आईडी के साथFragmentContainerViewके तौर पर एक ही लॉजिक का इस्तेमाल करता है. हालांकि, इससे कॉल को चेन करने की अनुमति मिलती है. (Ife17a, b/162527857)val navController = binding.container.getFragment<NavHostFragment>().navControllerजोड़ा गया
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}यह तय करने के लिए कि फ़्रैगमेंट ट्रांज़िशन में, आपकी थीम से लिया गया स्टैंडर्ड ऐक्टिविटी-ट्रांज़िशन ऐनिमेशन चालू करना है या नहीं. (I46652)
एक से ज़्यादा बैक स्टैक
FragmentManager, फ़्रैगमेंट ट्रांज़ैक्शन से बना बैक स्टैक बनाए रखता है. इसमें addToBackStack() का इस्तेमाल किया जाता है. इससे आपको उन लेन-देन को पॉप करने और पिछली स्थिति पर वापस जाने की सुविधा मिलती है. इसके लिए, फ़्रैगमेंट की स्थिति सेव करने के तरीकों का इस्तेमाल किया जाता है, ताकि आपके फ़्रैगमेंट अपनी स्थिति को सही तरीके से वापस ला सकें.
इस रिलीज़ में, इन तरीकों को बेहतर बनाया गया है. इसके लिए, दो नए FragmentManager एपीआई उपलब्ध कराए गए हैं: saveBackStack(String name) और restoreBackStack(String name). ये एपीआई, addToBackStack() की तरह ही name का इस्तेमाल करते हैं. इससे FragmentTransaction की स्थिति और उन लेन-देन में जोड़े गए हर फ़्रैगमेंट की स्थिति को सेव किया जा सकता है. साथ ही, बाद में उन लेन-देन और उनके फ़्रैगमेंट को उनकी स्थिति के साथ वापस लाया जा सकता है. इससे, मौजूदा पिछली गतिविधियों को सेव करके और सेव की गई पिछली गतिविधियों को वापस लाकर, कई पिछली गतिविधियों के बीच आसानी से ‘स्विच’ किया जा सकता है.
saveBackStack(), popBackStack() की तरह ही काम करता है. यह एसिंक्रोनस होता है. साथ ही, इससे उस नाम के सभी फ़्रैगमेंट ट्रांज़ैक्शन वापस हो जाते हैं (‘पॉप’ हो जाते हैं). साथ ही, जोड़े गए सभी फ़्रैगमेंट मिट जाते हैं और हट जाते हैं. हालांकि, यह कुछ अहम मामलों में अलग होता है:
saveBackStack()हमेशा शामिल होता है.popBackStack()के उलट, अगर बैक स्टैक में तय किया गया नाम नहीं मिलता है या शून्य नाम दिया जाता है, तोsaveBackStack()बैक स्टैक पर सभी लेन-देन दिखाएगा. हालांकि, अगर आपने पहलेaddToBackStack()का इस्तेमाल करके, उसी नाम से फ़्रैगमेंट लेन-देन नहीं किया है, तोsaveBackStack()कुछ नहीं करेगा.- उन लेन-देन से जोड़े गए सभी फ़्रैगमेंट की स्थिति सेव की जाती है. इसका मतलब है कि हर फ़्रैगमेंट की व्यू स्टेट सेव की जाती है, हर फ़्रैगमेंट का
onSaveInstanceState()कॉल किया जाता है और उस स्टेट को वापस लाया जाता है. साथ ही, उन फ़्रैगमेंट से जुड़े किसी भीViewModelइंस्टेंस को बनाए रखा जाता है और उन परonCleared()को नहीं कॉल किया जाता है.
saveBackStack() के साथ इस्तेमाल किए जा सकने वाले फ़्रैगमेंट लेन-देन को कुछ शर्तें पूरी करनी होंगी:
- हर फ़्रैगमेंट लेन-देन में
setReorderingAllowed(true)का इस्तेमाल किया जाना चाहिए, ताकि लेन-देन को एक ही एटॉमिक ऑपरेशन के तौर पर वापस लाया जा सके. - सेव किए गए लेन-देन का सेट, खुद में पूरा होना चाहिए. इसका मतलब है कि उन्हें लेन-देन के उस सेट के बाहर के किसी भी फ़्रैगमेंट का साफ़ तौर पर रेफ़रंस नहीं देना चाहिए. इससे यह पक्का किया जा सकेगा कि उन्हें बाद में कभी भी रीस्टोर किया जा सकता है. भले ही, इस दौरान पिछली गतिविधियों में कोई भी बदलाव किया गया हो.
- सेव किए गए किसी भी फ़्रैगमेंट को बनाए रखा गया फ़्रैगमेंट नहीं होना चाहिए. साथ ही, उसके ट्रांज़िटिव सेट में बनाए रखा गया कोई भी चाइल्ड फ़्रैगमेंट नहीं होना चाहिए. इससे यह पक्का किया जा सकेगा कि पिछली गतिविधियां सेव होने के बाद,
FragmentManagerसेव किए गए फ़्रैगमेंट के कोई भी रेफ़रंस न दिखाए.
saveBackStack() की तरह ही, अगर आपने पहले saveBackStack() को उसी नाम से कॉल नहीं किया है, तो restoreBackStack() कुछ नहीं करता. (b/80029773)
Fragment StrictMode
FragmentStrictMode एपीआई, रनटाइम जांच की सुविधा देते हैं. इससे यह पुष्टि की जा सकती है कि आपका ऐप्लिकेशन या जिन लाइब्रेरी पर आपका ऐप्लिकेशन निर्भर करता है वे फ़्रैगमेंट के बंद किए जा चुके एपीआई को कॉल नहीं कर रही हैं. उल्लंघन का पता चलने पर, लॉग मैसेज प्रिंट किया जा सकता है, कस्टम लिसनर को ट्रिगर किया जा सकता है या ऐप्लिकेशन को क्रैश किया जा सकता है. FragmentStrictMode.Policy यह कंट्रोल करता है कि कौनसी जांचें चालू हैं और कौनसे “जुर्माने” ट्रिगर किए गए हैं. इसे setStrictModePolicy() तरीके का इस्तेमाल करके, FragmentManager पर सेट किया जा सकता है. यह नीति उस FragmentManager पर लागू होती है. साथ ही, यह उन सभी चाइल्ड फ़्रैगमेंट मैनेजर पर भी लागू होती है जो अपनी यूनीक नीति सेट नहीं करते हैं. (#123, #131, #150, b/143774122)
detectFragmentReuse()यह पता लगाता है कि पहले हटाए गएFragmentइंस्टेंस कोFragmentManagerमें फिर से जोड़ा जा रहा है या नहीं.Fragmentइंस्टेंस को डिस्ट्रॉय करने औरFragmentManagerसे हटाने के बाद, आपको उससे इंटरैक्ट नहीं करना चाहिए और न ही उसका रेफ़रंस रखना चाहिए. (#142, b/153738653)detectFragmentTagUsage()यह पता लगाता है कि लेआउट एक्सएमएल में<fragment>टैग का इस्तेमाल कब किया जा रहा है. लेआउट के हिस्से के तौर पर फ़्रैगमेंट को बड़ा करते समय, आपको हमेशाFragmentContainerViewका इस्तेमाल करना चाहिए. (#141, b/153738235)detectWrongFragmentContainer()यह पता लगाता है कि आपने किसी ऐसे कंटेनर में फ़्रैगमेंट जोड़ा है जोFragmentContainerViewनहीं है. आपको अपने लेआउट में फ़्रैगमेंट के लिए, हमेशाFragmentContainerViewका इस्तेमाल करना चाहिए. (#146, b/181137036)detectRetainInstanceUsage(), यह पता लगाता है कि आपने काम न करने वालेsetRetainInstance()याgetRetainInstance()एपीआई का इस्तेमाल किया है या नहीं. (#140, b/153737954)detectSetUserVisibleHint()इस कुकी से यह पता चलता है कि आपने बंद किए जा चुकेsetUserVisibleHint()एपीआई का इस्तेमाल किया है. (#136, b/153738974)detectTargetFragmentUsage(),getTargetFragment()याgetTargetRequestCode()एपीआई का इस्तेमाल करने पर,detectTargetFragmentUsage()को इसका पता चलता है.setTargetFragment()(#139, b/153737745)
एपीआई में हुए बदलाव
FragmentManager.enableNewStateManager(boolean)के एक्सपेरिमेंटल एपीआई को हटा दिया गया है. अब नया स्टेट मैनेजर ही उपलब्ध है. (I90036, b/162776418)FragmentScenarioअबCloseableलागू करता है. इससे, Kotlin केuseतरीके या try-with-resources के साथ इसका इस्तेमाल किया जा सकता है. (#121, b/143774122)
लिंट की नई जांचें
UseGetLayoutInflaterलिंट चेक की सुविधा अबDialogFragmentमेंLayoutInflater.from(Context)का इस्तेमाल करने पर चेतावनी देती है. आपकोLayoutInflaterके लिए सहीgetLayoutInflater()पाने के लिए, हमेशा डायलॉग फ़्रैगमेंट केgetLayoutInflater()तरीके का इस्तेमाल करना चाहिए. (#156, b/170781346)DialogFragmentCallbacksDetectorलिंट चेक अबDialogFragmentकेonCreateDialog()तरीके मेंsetOnCancelListenerयाsetOnDismissListenerको कॉल करने पर चेतावनी देता है. इन लिसनर का मालिकाना हकDialogFragmentके पास होता है. इसलिए, आपको इन कॉलबैक को पाने के लिएonCancel()औरonDismiss()को बदलना चाहिए. (#171, b/181780047, b/187524311)
गड़बड़ियां ठीक की गईं
- Fragment 1.3.4: Fragment
1.3.3में हुई रिग्रेशन की समस्या को ठीक किया गया है. यह समस्या, Fragment मेंViewModelProviderया Jetpack Compose केviewModel()तरीके के साथViewTreeViewModelStoreOwner.get()API का इस्तेमाल करते समय होती थी. इन इस्तेमाल के उदाहरणों में अब आपके फ़्रैगमेंट से मिलेViewModelProvider.Factoryका सही तरीके से इस्तेमाल किया जाता है. ऐसा तब होता है, जब यहgetDefaultViewModelProviderFactory()को बदल देता है. जैसे, Hilt का इस्तेमाल करते समय@AndroidEntryPointएनोटेट किए गए फ़्रैगमेंट ऐसा करते हैं. अगर आपने उस तरीके को नहीं बदला है, तोSavedStateViewModelFactoryबनाया जाता है. यह फ़्रैगमेंट के व्यू के साथ-साथ अपनी स्थिति को सेव और रीस्टोर करता है. इसे डिफ़ॉल्ट फ़ैक्ट्री के तौर पर बनाया जाता है. (I5cbfa, b/186097368) - Fragment 1.3.4 से: API 29 पर
FragmentContainerViewका इस्तेमाल करने पर, इंसर्ट अब हमेशा के लिए डिसपैच नहीं होंगे. इससेBottomNavigationBarऔरFloatingActionButtonइंस्टेंस से जुड़ी समस्याएं ठीक हो जाएंगी. (I1bb78, b/186012452) - Fragment 1.3.4 से: अब प्रोसेस बंद होने के बाद, फ़्रैगमेंट के नतीजे वाले बंडल से अपना Parcelable वापस पाया जा सकता है. (I65932, b/187443158)
- Fragment 1.3.4 से: ViewGroup पर शेयर किए गए एलिमेंट का ट्रांज़िशन करते समय, अगर ViewGroup में
transitionGroupको false पर सेट किया गया है, तो अब यह सही तरीके से ट्रांज़िशन करेगा. (I99675)
बाहरी योगदान
FragmentScenarioकोCloseableलागू करने में मदद करने के लिए, simonschiller का धन्यवाद. (#121, b/143774122)- इस रिलीज़ के लिए, पूरा
FragmentStrictModeएपीआई जोड़ने के लिए धन्यवाद simonschiller! (#123, #131, #150, b/143774122, #142, b/153738653, #141, b/153738235, #146, b/181137036, #140, b/153737954, #136, b/153738974, #139, b/153737745) UseGetLayoutInflaterLint check जोड़ने के लिए, tatocaster को धन्यवाद. (#156, b/170781346)DialogFragmentCallbacksDetectorLint check जोड़ने के लिए, tatocaster को धन्यवाद. (#171, b/181780047)
वर्शन 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)
डिपेंडेंसी अपडेट
- Fragment
1.3.6से: अब फ़्रैगमेंट, Activity1.2.4पर निर्भर करता है (I3a66c)
वर्शन 1.3.5
16 जून, 2021
androidx.fragment:fragment:1.3.5, androidx.fragment:fragment-ktx:1.3.5, और androidx.fragment:fragment-testing:1.3.5 रिलीज़ किए जाते हैं. वर्शन 1.3.5 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- aosp/1679887 में, Fragment
1.3.4में शेयर किए गए एलिमेंट के ट्रांज़िशन में हुई रिग्रेशन की समस्या को ठीक किया गया है. अब फ़्रैगमेंट, ट्रांज़िशन ग्रुप को सही तरीके से हैंडल करते हैं. इन्हें सीधे तौर परtransitionGroup="true"के ज़रिए या किसीtransitionNameयाbackgroundके ज़रिए सेट किया जाता है. साथ ही, शेयर किए गए एलिमेंट अबIndexOutOfBoundsExceptionनहीं दिखाएंगे. (I16484, b/188679569, b/188969304)
वर्शन 1.3.4
18 मई, 2021
androidx.fragment:fragment:1.3.4, androidx.fragment:fragment-ktx:1.3.4, और androidx.fragment:fragment-testing:1.3.4 रिलीज़ किए जाते हैं. वर्शन 1.3.4 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Hilt का इस्तेमाल करते समय, Fragment
1.3.3में हुई रिग्रेशन की समस्या को ठीक किया गया है. यह समस्या,ViewTreeViewModelStoreOwner.get()एपीआई कोViewModelProviderया Fragment में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)
गड़बड़ियां ठीक की गईं
- Fragment
1.3.2में हुई रिग्रेशन की समस्या को ठीक किया गया है. इस समस्या की वजह से,setPrimaryNavFragmentऑपरेशन शामिल करने वालेFragmentTransactionको पॉप अप करने पर,popEnterएनिमेशन नहीं चलते थे. जैसे,NavHostFragmentमें इस्तेमाल किए जाने वाले एनिमेशन. (I38c87, b/183877426) FragmentContainerViewअब यह पक्का करता है कि हरFragmentकोWindowInsetsका नया सेट भेजा जाए. इससे यह पक्का होता है कि हर फ़्रैगमेंट अब इनसेट का इस्तेमाल अलग से कर सकता है. (I63f68, b/172153900)DialogFragmentअब उन मामलों को सही तरीके से हैंडल करता है जहां किसी कंटेनर में चाइल्ड फ़्रैगमेंट जोड़ा जाता है. इस कंटेनर का आईडी, आपकी कस्टमDialogक्लास के कंटेनर के आईडी के जैसा होता है. इससे, व्यू हैरारकी से जुड़ी समस्याएं ठीक हो जाती हैं. ऐसा तब होता है, जबBottomSheetDialogजैसे डायलॉग बॉक्स में इस्तेमाल किए गए आईडी को फिर से इस्तेमाल किया जाता है. (Ie6279, b/180021387)FragmentManager.dump()अब ऐक्टिव फ़्रैगमेंट की सूची में मौजूद पहले फ़्रैगमेंट को सही तरीके से इंडेंट करता है. (If5c33, b/183705451)
स्टेट मैनेजर की नई सुविधा से जुड़ी गड़बड़ियां ठीक की गईं
- नया फ़्रैगमेंट स्टेट मैनेजर, अब छिपाने की कार्रवाइयों के साथ-साथ एग्ज़िट ट्रांज़िशन को सही तरीके से हैंडल करता है. (I9e4de, b/184830265)
वर्शन 1.3.2
24 मार्च, 2021
androidx.fragment:fragment:1.3.2, androidx.fragment:fragment-ktx:1.3.2, और androidx.fragment:fragment-testing:1.3.2 रिलीज़ किए जाते हैं. वर्शन 1.3.2 में ये बदलाव शामिल हैं.
स्टेट मैनेजर की नई सुविधा से जुड़ी गड़बड़ियां ठीक की गईं
popBackStack()औरcommit(), दोनों कार्रवाइयों को एक साथ चलाने पर, आखिरी कार्रवाई अब सभी ऐनिमेशन के लिए दिशा सेट करेगी. ऐसा इसलिए, ताकि कुछ पॉप ऐनिमेशन और कुछ एंटर ऐनिमेशन चलाने के बजाय, सभी ऐनिमेशन के लिए दिशा सेट की जा सके. (I7072e, b/181142246)- शेयर किए गए एलिमेंट की हैरारकी में मौजूद व्यू के ट्रांज़िशन के नाम अब शेयर किए गए एलिमेंट के ट्रांज़िशन के दौरान नहीं मिटेंगे. (I4d4a6, b/179934757)
डिपेंडेंसी से जुड़े अपडेट
- अब फ़्रैगमेंट, Activity 1.2.2 पर निर्भर करता है. इससे Fragment 1.3.1 या इसके बाद के वर्शन का इस्तेमाल करते समय, ऐक्टिविटी के
InvalidFragmentVersionForActivityResultलिंट चेक से जुड़ी समस्या ठीक हो जाती है. - Fragment अब Lifecycle 2.3.1 पर निर्भर करता है.
वर्शन 1.3.1
10 मार्च, 2021
androidx.fragment:fragment:1.3.1, androidx.fragment:fragment-ktx:1.3.1, और androidx.fragment:fragment-testing:1.3.1 रिलीज़ किए जाते हैं. वर्शन 1.3.1 में ये बदलाव शामिल हैं.
नई सुविधाएं
- अब
DialogFragmentमें मौजूद डायलॉग, अपने DecorView के ज़रिए ViewTree के मालिकों को ऐक्सेस कर सकते हैं. इससे यह पक्का किया जा सकेगा किDialogFragmentका इस्तेमालComposeViewके साथ किया जा सकता है. (Ib9290, b/180691023)
गड़बड़ियां ठीक की गईं
- FragmentContainerView का इस्तेमाल करके, पहले से मौजूद
RESUMEDगतिविधि में जोड़े गए फ़्रैगमेंट अब कॉन्फ़िगरेशन में बदलाव होने के बाद सही तरीके से दिखते हैं. (Ie14c8, b/180538371) - फ़्रैगमेंट के आखिर में अब कोई अतिरिक्त
}नहीं हैtoString()(I54705, b/177761088) - FragmentActivity में बदले गए तरीके, अब बेस मेथड javaDoc (I736ce, b/139548782) को सही तरीके से इनहेरिट करते हैं
setFragmentResultऔरsetFragmentResultListenerके दस्तावेज़ों में, पैरामीटर के दस्तावेज़ों को अपडेट किया गया है. इससे पता चलता है कि अब वे नल वैल्यू स्वीकार नहीं करते हैं (I990ba, b/178348386)
स्टेट मैनेजर की नई सुविधा से जुड़ी गड़बड़ियां ठीक की गईं
mFocusedView(Ib4e9e, b/179925887) की वजह से फ़्रैगमेंट में मेमोरी लीक होने की समस्या को ठीक किया गया- लेन-देन दिखाने/छिपाने की सुविधा का इस्तेमाल करते समय, फ़्रैगमेंट अब
onCreateOptionsMenuको सही तरीके से कॉल करते हैं (I8bce8, b/180255554) - अब ट्रांज़िशन वाले चाइल्ड फ़्रैगमेंट, फ़्रैगमेंट के लेआउट से पहले ही सही तरीके से पहुंच जाएंगे
RESUMED(Ic11e6, b/180825150) <fragment>टैग का इस्तेमाल करके इन्फ़्लेट किए गए फ़्रैगमेंट अब हमेशाRESUMEDतक पहुंचेंगे (I452ac, (I9fa49)
डिपेंडेंसी से जुड़े अपडेट
- Fragment 1.3.1, Activity
1.2.1पर निर्भर करता है. (I557b9)
वर्शन 1.3.0
10 फ़रवरी, 2021
androidx.fragment:fragment:1.3.0, androidx.fragment:fragment-ktx:1.3.0, और androidx.fragment:fragment-testing:1.3.0 रिलीज़ किए जाते हैं. वर्शन 1.3.0 में ये बदलाव शामिल हैं.
1.2.0 के बाद के मुख्य बदलाव
- नया स्टेट मैनेजर:
FragmentManagerके इंटरनल कोड को फिर से लिखा गया है. इससे लाइफ़साइकल इवेंट, ऐनिमेशन, और ट्रांज़िशन को डिसपैच करने से जुड़ी कई समस्याएं ठीक हो गई हैं. साथ ही, यह भी ठीक हो गया है कि पोस्टपोन किए गए फ़्रैगमेंट को कैसे हैंडल किया जाता है. Activity Result API इंटिग्रेशन: Activity
1.2.0में पेश किए गएActivityResultRegistryएपीआई के लिए सहायता जोड़ी गई है. इससेstartActivityForResult()+onActivityResult()औरrequestPermissions()+onRequestPermissionsResult()फ़्लो को हैंडल किया जा सकता है. साथ ही, इन फ़्लो की जांच करने के लिए हुक उपलब्ध कराए जा सकते हैं. इसके अलावा, आपके फ़्रैगमेंट में तरीकों को बदला नहीं जाता है. अपडेट किया गया गतिविधि से नतीजा पाना लेख पढ़ें.- इस रिलीज़ में, अमान्य अनुरोध कोड और अनुमति के अनुरोधों को भेजने से जुड़ी कई समस्याओं को ठीक किया गया है. इनकी वजह से, Activity Result API,
FragmentActivityके पिछले वर्शन पर काम नहीं करता था.FragmentActivityयाAppCompatActivityमें Activity Result API का इस्तेमाल करने के लिए, आपको Fragment 1.3.0 पर अपग्रेड करना होगा.
- इस रिलीज़ में, अमान्य अनुरोध कोड और अनुमति के अनुरोधों को भेजने से जुड़ी कई समस्याओं को ठीक किया गया है. इनकी वजह से, Activity Result API,
Fragment Result API:
FragmentManagerपर नए एपीआई के ज़रिए, दो फ़्रैगमेंट के बीच नतीजे पास करने की सुविधा जोड़ी गई. यह हैरारकी फ़्रैगमेंट (माता-पिता/बच्चे), DialogFragment, और नेविगेशन में मौजूद फ़्रैगमेंट के लिए काम करता है. साथ ही, यह पक्का करता है कि नतीजे सिर्फ़ आपके फ़्रैगमेंट को भेजे जाएं, जबकि वह कम से कमSTARTEDपर हो. इन नए एपीआई के पक्ष में, टारगेट फ़्रैगमेंट एपीआई को बंद कर दिया गया है. Fragment Result API का इस्तेमाल करके नतीजे पाना लेख पढ़ें.FragmentOnAttachListener:FragmentActivityऔरFragmentपरonAttachFragment()कॉलबैक अब काम नहीं करता है. ज़्यादा बेहतर विकल्प देने के लिए, एक नयाFragmentOnAttachListenerजोड़ा गया है. इससेFragmentOnAttachListenerको अलग-अलग, टेस्ट किए जा सकने वाले लिसनर को सौंपा जा सकता है. साथ ही, अपने डायरेक्ट चाइल्ड FragmentManager के अलावा, FragmentManager में लिसनर जोड़ने की सुविधा भी मिलती है.onAttachFragment()FragmentScenarioमें सुधार:fragment-testingआर्टफ़ैक्ट कीFragmentScenarioक्लास को Kotlin में फिर से लिखा गया है. साथ ही, इसमें कई सुधार किए गए हैं:FragmentScenarioअबmoveToState()को लागू करने के लिएsetMaxLifecycle()का इस्तेमाल करता है. इससे यह पक्का होता है कि सभी एपीआई लेवल पर एक जैसा व्यवहार हो और फ़्रैगमेंट की स्थिति को बुनियादी ऐक्टिविटी से अलग किया जा सके.FragmentScenarioअब शुरुआतीLifecycle.Stateसेट करने की सुविधा देता है. इससे, हरLifecycle.Stateपर पहली बार जाने से पहले, फ़्रैगमेंट की स्थिति की पुष्टि की जा सकती है.- अब
onFragmentकेFragmentScenarioएपीआई का विकल्प उपलब्ध है. यह Kotlin reified एक्सटेंशन मेथडwithFragmentके तौर पर उपलब्ध है. इससे वैल्यू वापस की जा सकती है. खास तौर पर, यह दिए गए ब्लॉक में जनरेट हुए अपवादों को फिर से थ्रो करता है.
ViewTreeसपोर्ट:Fragmentअब लाइफ़साइकल2.3.0और SavedState1.1.0में जोड़े गएViewTreeLifecycleOwner.get(View),ViewTreeViewModelStoreOwner.get(View), औरViewTreeSavedStateRegistryOwnerएपीआई के साथ काम करता है. इससेFragmentमेंViewका इस्तेमाल करते समय, फ़्रैगमेंट कोViewModelStoreOwnerके तौर पर दिखाया जाएगा. साथ ही, फ़्रैगमेंट के व्यू लाइफ़साइकल से जुड़ेSavedStateRegistryOwnerऔरLifecycleOwnerको दिखाया जाएगा.TRANSIT_ऐनिमेशन में बदलाव: फ़्रैगमेंट के डिफ़ॉल्ट इफ़ेक्ट,TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSE, औरTRANSIT_FRAGMENT_FADEअबAnimationके बजायAnimatorका इस्तेमाल करते हैं. इन ऐनिमेशन को बनाने के लिए इस्तेमाल किए गए संसाधन अब निजी हैं.setRetainInstance()बंद होना: फ़्रैगमेंट पर मौजूदsetRetainInstance()मेथड बंद हो गया है. ViewModels के आने के बाद, डेवलपर के पास ऐसी स्थिति को बनाए रखने के लिए एक खास एपीआई होता है जिसे ऐक्टिविटी, फ़्रैगमेंट, और नेविगेशन ग्राफ़ से जोड़ा जा सकता है. इससे डेवलपर, सामान्य फ़्रैगमेंट का इस्तेमाल कर सकते हैं. साथ ही, वे अपनी पसंद की स्थिति को अलग रख सकते हैं. इससे, लीक होने के सामान्य सोर्स से बचा जा सकता है. साथ ही, सेव की गई स्थिति के एक बार बनने और मिटने की काम की प्रॉपर्टी को बनाए रखा जा सकता है. जैसे,ViewModelका कंस्ट्रक्टर और इसे मिलने वालाonCleared()कॉलबैक.ViewPager 1 अडैप्टर अब सेवा में नहीं है: ViewPager2
1.0.0के रिलीज़ होने के बाद,ViewPagerके साथ इंटरैक्ट करने के लिएFragmentPagerAdapterऔरFragmentStatePagerAdapterक्लास अब सेवा में नहीं हैं. ViewPager से ViewPager2 पर माइग्रेट करना लेख पढ़ें.
वर्शन 1.3.0-rc02
27 जनवरी, 2021
androidx.fragment:fragment:1.3.0-rc02, androidx.fragment:fragment-ktx:1.3.0-rc02, और androidx.fragment:fragment-testing:1.3.0-rc02 रिलीज़ किए जाते हैं. वर्शन 1.3.0-rc02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- हमने उस समस्या को ठीक कर दिया है जिसमें कॉन्फ़िगरेशन में बदलाव करने के बाद, माता-पिता
DialogFragmentका फ़्रैगमेंट, बच्चेDialogFragmentके फ़्रैगमेंट के ऊपर दिखता था. अब बच्चे का डायलॉग फ़्रैगमेंट हमेशा माता-पिता के डायलॉग फ़्रैगमेंट के ऊपर दिखेगा. (I30806, b/177439520) - उस समस्या को ठीक किया गया है जिसमें
Animationके साथhideऑपरेशन करने पर, ऐनिमेशन के आखिर में छिपा हुआ फ़्रैगमेंट फ़्लैश होता था. (I57e22, b/175417675) - व्यू हैरारकी अटैच होने से पहले ट्रांज़िशन जोड़े गए फ़्रैगमेंट अब
RESUMEDतक सही तरीके से पहुंचते हैं. (I1fc1d, b/177154873)
स्टेट मैनेजर की नई सुविधा से जुड़ी गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट का व्यू
Lifecycleअब उन मामलों को ठीक से हैंडल करता है जहां फ़्रैगमेंट का व्यू,LifecycleकेCREATEDतक पहुंचने से पहले ही खत्म हो जाता है. इससे “INITIALIZED से कोई इवेंट डाउन नहीं हुआ” जैसे अपवादों से बचा जा सकता है. (eda2bd, b/176138645) Animatorका इस्तेमाल करने वाले फ़्रैगमेंट अबFragmentContainerViewका इस्तेमाल करते समय सही क्रम में दिखते हैं. (Id9aa3, b/176089197)
वर्शन 1.3.0-rc01
16 दिसंबर, 2020
androidx.fragment:fragment:1.3.0-rc01, androidx.fragment:fragment-ktx:1.3.0-rc01, और androidx.fragment:fragment-testing:1.3.0-rc01 रिलीज़ किए जाते हैं. वर्शन 1.3.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
onPrepareOptionsMenu()अबonCreateOptionsMenu()के लॉजिक को फ़ॉलो करता है. साथ ही, जब पैरंट फ़्रैगमेंटsetMenuVisibility(false)को कॉल करता है, तब इसे कॉल नहीं किया जाता. (Id7de8, b/173203654)
स्टेट मैनेजर की नई सुविधा से जुड़ी गड़बड़ियां ठीक की गईं
Animationवाले फ़्रैगमेंट कोFragmentContainerViewमें जोड़ते समय, फ़िक्स्ड लीक और विज़ुअल आर्टफ़ैक्ट की समस्या ठीक की गई. इसके बाद, पॉप ऑपरेशन से उस फ़्रैगमेंट को जोड़ा गया. (I952d8)- उस समस्या को ठीक किया गया है जिसमें फ़्रैगमेंट के व्यू को व्यू हैरारकी में तब तक रखा जाता था, जब तक उसे
onCreate()याonViewCreated()तरीकों के दौरान बदला नहीं जाता था. (I8a7d5) - अब फ़्रैगमेंट को फिर से शुरू करने पर, फ़ोकस को फ़्रैगमेंट के रूट व्यू पर सही तरीके से वापस लाया जाता है. (Ifc84b)
- एक ही फ़्रैगमेंट ट्रांज़ैक्शन में पॉप और रिप्लेस ऑपरेशन को एक साथ इस्तेमाल करने पर, अब सही ऐनिमेशन (Ifd4e4, b/170328691) दिखेंगे
वर्शन 1.3.0-beta02
2 दिसंबर, 2020
androidx.fragment:fragment:1.3.0-beta02, androidx.fragment:fragment-ktx:1.3.0-beta02, और androidx.fragment:fragment-testing:1.3.0-beta02 रिलीज़ किए जाते हैं. वर्शन 1.3.0-beta02 में ये बदलाव शामिल हैं.
नई सुविधाएं
FragmentScenarioको पूरी तरह से Kotlin में बदल दिया गया है. साथ ही,FragmentActionके लिए Kotlin 1.4 के फ़ंक्शनल इंटरफ़ेस का इस्तेमाल करके, सोर्स और बाइनरी के साथ काम करने की सुविधा को बनाए रखा गया है. (I19d31)
व्यवहार में बदलाव
classयाandroid:nameएट्रिब्यूट का इस्तेमाल करके फ़्रैगमेंट को बड़ा न करने वाले FragmentContainerViews को अबFragmentActivityके बाहर इस्तेमाल किया जा सकता है. (Id4397, b/172266337)- अब किसी फ़्रैगमेंट के लाइफ़साइकल को
DESTROYEDपर सेट करने की कोशिश करने पर,IllegalArgumentException(Ie7651, b/170765622) दिखेगा DESTROYEDस्थिति के साथ FragmentScenario को शुरू करने पर, अबIllegalArgumentException(I73590, b/170765622) दिखेगा
स्टेट मैनेजर की नई सुविधा से जुड़ी गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें
AnimatorयाTRANSIT_FRAGMENT_विकल्पों में से किसी एक का इस्तेमाल करने वाले फ़्रैगमेंट ट्रांज़िशन को रोकने पर, व्यू अपनी फ़ाइनल स्थिति तक नहीं पहुंच पाता था. (I92426, b/169874632) Animationसे बाहर निकलने वाले फ़्रैगमेंट को सही तरीके से डिस्ट्रॉय करने में आ रही समस्या को ठीक किया गया है. (I83d65)- जिन फ़्रैगमेंट के इफ़ेक्ट को उलट दिया गया है वे अब सही तरीके से बंद हो जाते हैं और सही तरीके से शुरू होने वाले इफ़ेक्ट के साथ फिर से शुरू हो जाते हैं. (I62226, b/167092035)
- उस समस्या को ठीक किया गया है जिसकी वजह से
hide()का एग्ज़िटAnimatorकाम नहीं करता था. (Id7ffe) - अब फ़्रैगमेंट को कुछ समय के लिए बंद करने के बाद तुरंत शुरू करने पर, वे ठीक से दिखते हैं. (Ie713b, b/170022857)
- ऐनिमेशन के दौरान फ़ोकस किए गए व्यू को हटाने वाले फ़्रैगमेंट, अलग किए गए व्यू पर फ़ोकस को वापस लाने की कोशिश नहीं करेंगे. ऐसा तब होगा, जब वे
RESUMED(I38c65, b/172925703) पर पहुंच जाएंगे
बाहरी योगदान
FragmentFactoryअब अलग-अलगClassLoaderइंस्टेंस के लिए, फ़्रैगमेंट क्लास को अलग से कैश मेमोरी में सेव करता है. धन्यवाद, साइमन शिलर! (#87, b/113886460)
वर्शन 1.3.0-beta01
1 अक्टूबर, 2020
androidx.fragment:fragment:1.3.0-beta01, androidx.fragment:fragment-ktx:1.3.0-beta01, और androidx.fragment:fragment-testing:1.3.0-beta01 रिलीज़ किए जाते हैं. वर्शन 1.3.0-beta01 में ये बदलाव शामिल हैं.
नई सुविधाएं
setMaxLifecycle()अबLifecycleकी स्थिति कोINITIALIZINGपर सेट करने की सुविधा देता है. हालांकि, ऐसा तब तक किया जा सकता है, जब तक फ़्रैगमेंट कोCREATEDमें नहीं ले जाया जाता. (b/159662173)
एपीआई में हुए बदलाव
- Kotlin 1.4 का इस्तेमाल करने के लिए, androidx को अपग्रेड करें (Id6471, b/165307851, b/165300826)
व्यवहार में बदलाव
- फ़्रैगमेंट रिसॉर्स फ़ाइलों को सही तरीके से निजी के तौर पर सेट किया गया हो. (aosp/1425237)
गड़बड़ियां ठीक की गईं
<fragment>टैग का इस्तेमाल करके इन्फ़्लेट किए गए फ़्रैगमेंट, अब तब तक सही तरीके से इंतज़ार करेंगे, जब तक उनके व्यू को किसी कंटेनर में नहीं जोड़ दिया जाता. इसके बाद, वे STARTED (I02f4c) पर चले जाएंगे- अब दिखने वाले और फिर
setMaxLifecycle()सेCREATEDहोने वाले फ़्रैगमेंट, अपने एग्ज़िट इफ़ेक्ट को सही तरीके से लागू करते हैं. (b/165822335) - बैक स्टैक में नहीं जोड़े गए अलग किए गए फ़्रैगमेंट को हटाने से अब मेमोरी लीक नहीं होती. निकलास ऐंसमन गर्ट्ज़ का शुक्रिया! (b/166489383)
- अब चालू फ़्रैगमेंट में हमेशा नॉन-शून्य
FragmentManagerहोगा. साथ ही, नॉन-शून्यFragmentManagerवाले फ़्रैगमेंट को हमेशा चालू माना जाएगा. (aosp/1422346) - फ़्रैगमेंट के डिफ़ॉल्ट इफ़ेक्ट,
TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSE, औरTRANSIT_FRAGMENT_FADEअबAnimationके बजायAnimatorका इस्तेमाल करते हैं. (b/166155034)
स्टेट मैनेजर की नई सुविधा से जुड़ी गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट अब ऐनिमेशन शुरू होने से ठीक पहले, व्यू फ़ोकस की स्थिति को सही तरीके से वापस लाते हैं. (Icc256)
- जिन फ़्रैगमेंट में अब सिर्फ़ शेयर किए गए एलिमेंट ट्रांज़िशन होते हैं वे अपने खास इफ़ेक्ट को सही तरीके से पूरा करते हैं. इसका मतलब है कि वे अपनी फ़ाइनल स्थिति में चले जाते हैं (Iaebc7, b/166658128)
- फ़्रैगमेंट व्यू को अब हमेशा कंटेनर से हटा दिया जाता है. इसके बाद, उन्हें खत्म किया जाता है. (Id5876)
- नया स्टेट मैनेजर, अब हमेशा बाहर निकलने वाले फ़्रैगमेंट व्यू को हटाने के बाद ही, अंदर आने वाले फ़्रैगमेंट व्यू को जोड़ता है. (I41a6e)
- फ़्रैगमेंट व्यू की दिखने की स्थिति में किए गए साफ़ तौर पर बदलावों को अब नए स्टेट मैनेजर के हिसाब से लागू किया जाता है. इसका मतलब है कि अगर आपने ऐनिमेशन शुरू होने से पहले, किसी फ़्रैगमेंट के व्यू को
INVISIBLEपर सेट किया है, तो वह वाकई में नहीं दिखेगा. (b/164481490) - अब फ़्रैगमेंट,
Animationsके बजायAnimatorsको प्राथमिकता देते हैं. इसका मतलब है कि दोनों के साथ फ़्रैगमेंट सिर्फ़Animatorको चलाएगा औरAnimationको अनदेखा कर देगा. (b/167579557) - नए स्टेट मैनेजर की वजह से, अब ऐनिमेशन डालते समय फ़्रैगमेंट फ़्लैश नहीं होते. (b/163084315)
आम समस्या
नए स्टेट मैनेजर का इस्तेमाल करते समय, अगर खास इफ़ेक्ट डालते समय वापस जाने के लिए बटन दबाया जाता है, तो पिछले फ़्रैगमेंट पर वापस जाने के बजाय, पुराना फ़्रैगमेंट कभी भी फिर से नहीं जोड़ा जाता. इससे स्क्रीन खाली हो जाती है. (b/167259187, b/167092035, b/168442830)
वर्शन 1.3.0-alpha08
19 अगस्त, 2020
androidx.fragment:fragment:1.3.0-alpha08, androidx.fragment:fragment-ktx:1.3.0-alpha08, और androidx.fragment:fragment-testing:1.3.0-alpha08 रिलीज़ किए जाते हैं. वर्शन 1.3.0-alpha08 में ये बदलाव शामिल हैं.
New State Manager
इस रिलीज़ में, FragmentManager के इंटरनल स्टेट मैनेजमेंट को फिर से फ़ैक्टर किया गया है. इससे लाइफ़साइकल के तरीकों, ऐनिमेशन, और ट्रांज़िशन के डिस्पैच पर असर पड़ता है. साथ ही, इससे यह भी पता चलता है कि स्थगित किए गए लेन-देन को कैसे हैंडल किया जाता है. यह सुविधा डिफ़ॉल्ट रूप से चालू रहती है. ज़्यादा जानकारी के लिए, फ़्रैगमेंट: इंटरनल को फिर से बनाने के बारे में ब्लॉग पोस्ट देखें. (b/139536619, b/147749580)
FragmentManager.enableNewStateManager(boolean)में मौजूद एक्सपेरिमेंटल एपीआई का इस्तेमाल करके, यह कंट्रोल किया जा सकता है कि FragmentManager, नए स्टेट मैनेजर का इस्तेमाल करे या नहीं. (I7b6ee)
यहां दी गई समस्याएं सिर्फ़ नए स्टेट मैनेजर का इस्तेमाल करने पर ठीक होती हैं:
replaceऑपरेशन का पिछला फ़्रैगमेंट अब नए फ़्रैगमेंट के शुरू होने से पहले सही तरीके से बंद हो जाता है. (b/161654580)- अब फ़्रैगमेंट, एक ही फ़्रैगमेंट पर एक से ज़्यादा ऐनिमेशन को चलने से रोकते हैं. इससे उन मामलों से बचा जा सकता है जहां
Animation, सभीTransitionइफ़ेक्ट को बदल देता है या किसी फ़्रैगमेंट परAnimatorऔरTransition, दोनों चलते हैं. (b/149569323) - अब सिर्फ़ आखिरी फ़्रैगमेंट के एंटर होने और पहले फ़्रैगमेंट के एग्ज़िट होने के बजाय, एंटर और एग्ज़िट होने वाले सभी फ़्रैगमेंट के
enterTransitionऔरexitTranstionको चलाया जाता है. (b/149344150) - जिन फ़्रैगमेंट को कुछ समय के लिए रोक दिया गया है वे अब
CREATEDस्थिति में नहीं अटकते. इसके बजाय, वे अन्य फ़्रैगमेंट के साथSTARTEDस्थिति में चले जाते हैं. (b/129035555) - उस समस्या को ठीक किया गया है जिसमें
FragmentManager, लेन-देन को फिर से ऑर्डर करने और लेन-देन को फिर से ऑर्डर न करने के बीच में गड़बड़ी करता था. (b/147297731) - एक साथ कई फ़्रैगमेंट हटाने पर, अब फ़्रैगमेंट को कुछ समय के लिए पोस्टपोन करने पर, बीच के फ़्रैगमेंट कुछ समय के लिए नहीं दिखेंगे. (b/37140383)
FragmentManagerअबonAttachFragment()कॉलबैक के अंदर सेfindFragmentById()याfindFragmentByTag()को कॉल करने पर सही फ़्रैगमेंट दिखाता है. (b/153082833)- जब फ़्रैगमेंट को बदलने वाले फ़्रैगमेंट को कुछ समय के लिए रोक दिया जाता है, तब फ़्रैगमेंट के बंद होने पर, फ़्रैगमेंट अब
onCreateView()को कॉल नहीं करते हैं. (b/143915710) - फ़्रेमवर्क
Transitionऔर AndroidXTransitionइंस्टेंस को एक साथ इस्तेमाल करने की कोशिश करते समय दिखने वाले गड़बड़ी के मैसेज में, अब अमान्य ट्रांज़िशन वाले फ़्रैगमेंट का ज़िक्र किया गया है. (b/155574969)
व्यवहार में बदलाव
- अब किसी फ़्रैगमेंट के
onCreate()लाइफ़साइकल के तरीके में,ActivityResultLauncherपरlaunch()को कॉल किया जा सकता है. (b/161464278) - अब
onCreate()के बादregisterForActivityResult()को कॉल करने पर, एक अपवाद दिखता है. इससे पता चलता है कि इसकी अनुमति नहीं है. कॉन्फ़िगरेशन में बदलाव के बाद, नतीजे नहीं मिलने पर यह अपवाद दिखता है. (b/162255449) FragmentActivityअब Activity1.2.0-alpha08में पेश किए गएOnContextAvailableListenerएपीआई का इस्तेमाल करके,FragmentManagerकी स्थिति को पहले जैसा करता है.FragmentActivityकी सबक्लास में जोड़े गए सभी लिसनर, इस लिसनर के बाद चलेंगे. (I513da)
गड़बड़ियां ठीक की गईं
startIntentSenderForResult()का इस्तेमाल करते समय,ActivityOptionsके ज़रिए पास किए गए पैरामीटर अब काम करेंगे. (b/162247961)
आम समस्या
- नए स्टेट मैनेजर का इस्तेमाल करते समय,
onViewCreated()के बाद औरonResume()से पहले फ़्रैगमेंट के रूट व्यू की दृश्यता को सीधे तौर पर सेट करने से, सेट की गई दृश्यताFragmentManagerसे बदल जाती है.FragmentManager, रूट व्यू की दृश्यता को कंट्रोल करता है. इसके बजाय, आपको अपने फ़्रैगमेंट के दिखने की सेटिंग बदलने के लिए, हमेशाhide()औरshow()कार्रवाइयों का इस्तेमाल करना चाहिए. (b/164481490)
वर्शन 1.3.0-alpha07
22 जुलाई, 2020
androidx.fragment:fragment:1.3.0-alpha07, androidx.fragment:fragment-ktx:1.3.0-alpha07, और androidx.fragment:fragment-testing:1.3.0-alpha07 रिलीज़ किए जाते हैं. वर्शन 1.3.0-alpha07 में ये बदलाव शामिल हैं.
नई सुविधाएं
FragmentScenarioअबCREATED,STARTEDयाRESUMEDके लिए, लाइफ़साइकल की शुरुआती स्थिति सेट करने की सुविधा देता है. इससे फ़्रैगमेंट को हमेशाRESUMEDस्थिति में ले जाने की ज़रूरत नहीं पड़ती. (b/159662750)onFragmentकेFragmentScenarioएपीआई के विकल्प के तौर पर, Kotlin के रीफ़ाइड एक्सटेंशन मेथडwithFragmentको जोड़ा गया है. इससे वैल्यू को वापस किया जा सकता है. खास तौर पर, यह दिए गए ब्लॉक में जनरेट हुए अपवादों को फिर से थ्रो करता है. (b/158697631)
व्यवहार में बदलाव
FragmentScenarioअबmoveToState()को लागू करने के लिएsetMaxLifecycle()का इस्तेमाल करता है. इससे यह पक्का होता है कि सभी एपीआई लेवल पर एक जैसा व्यवहार हो और फ़्रैगमेंट की स्थिति को बुनियादी ऐक्टिविटी से अलग किया जा सके. (b/156527405)ViewTreeSavedStateRegistryOwnerसे मिलाSavedStateRegistryOwnerअब फ़्रैगमेंट व्यू के लाइफ़साइकल से जुड़ा है. इससे यह पक्का होता है कि इसकी स्थिति सेव हो गई है और इसे फ़्रैगमेंट के व्यू के साथ ही वापस लाया जा सकता है. (b/158503763)
गड़बड़ियां ठीक की गईं
- अब फ़्रैगमेंट, फ़्रैगमेंट के व्यू के अटैच होने का इंतज़ार करते हैं. इसके बाद, वे
ViewCompat.requestApplyInsets()को कॉल करते हैं. इससे उन मामलों से बचा जा सकता है जहां इंसर्ट करने का अनुरोध खारिज कर दिया जाता था. (b/158095749) clearFragmentResultListenerको कॉल करने पर, अब लाइफ़साइकल ऑब्ज़र्वर ठीक से हट जाता है. (b/159274993)
वर्शन 1.3.0-alpha06
10 जून, 2020
androidx.fragment:fragment:1.3.0-alpha06, androidx.fragment:fragment-ktx:1.3.0-alpha06, और androidx.fragment:fragment-testing:1.3.0-alpha06 रिलीज़ किए जाते हैं. वर्शन 1.3.0-alpha06 में ये बदलाव शामिल हैं.
नई सुविधाएं
FragmentActivityऔरFragmentपरonAttachFragment()कॉलबैक का इस्तेमाल अब नहीं किया जा सकता. ज़्यादा बेहतर विकल्प देने के लिए, एक नयाFragmentOnAttachListenerजोड़ा गया है. इससेonAttachFragment()को अलग-अलग, टेस्ट किए जा सकने वाले लिसनर को सौंपा जा सकता है. साथ ही, सीधे तौर पर चाइल्ड FragmentManager के अलावा, FragmentManager में लिसनर जोड़ने की सुविधा भी मिलती है. (I06d3d)
गड़बड़ियां ठीक की गईं
- अब पैरंट फ़्रैगमेंट की व्यू स्टेट, चाइल्ड फ़्रैगमेंट से पहले रीस्टोर हो जाती है. इससे कॉन्फ़िगरेशन में बदलाव होने के बाद, विज़ुअल ऑर्डरिंग से जुड़ी समस्या ठीक हो जाती है. ऐसा तब होता है, जब
DialogFragment, चाइल्ड फ़्रैगमेंट के तौर पर दूसराDialogFragmentदिखाता है. (b/157195715) - उस समस्या को ठीक किया गया है जिसमें
UseRequireInsteadOfGetलिंट चेक,?.और!!ऑपरेटर के चेन किए गए इस्तेमाल को सही तरीके से हैंडल नहीं करता था. (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 में ये बदलाव शामिल हैं.
नई सुविधाएं
FragmentमेंViewका इस्तेमाल करते समय, Lifecycle2.3.0-alpha03सेViewTreeViewModelStoreOwnerऔर SavedState1.1.0-alpha01सेViewTreeSavedStateRegistryOwnerके काम करने की सुविधा जोड़ी गई है. (aosp/1297993, aosp/1300264)
एपीआई में हुए बदलाव
setFragmentResult()औरsetFragmentResultListener()API अब नॉन-नलBundleऔरFragmentResultListenerलेते हैं. पहले से सेट किए गए किसी नतीजे या लिसनर को साफ़ तौर पर हटाने के लिए, नएclearFragmentResult()औरclearFragmentResultListener()तरीकों का इस्तेमाल करें. (b/155416778)- लैंबडा लेने वाले
setFragmentResultListener()Kotlin एक्सटेंशन को अबinlineके तौर पर मार्क किया गया है. (b/155323404)
व्यवहार में बदलाव
Fragmentपर पहले से मौजूदstartActivityForResult(),startIntentSenderForResult(), औरrequestPermissionsअब अंदरूनी तौर परActivityResultRegistryका इस्तेमाल करते हैं. इसलिए, इन एपीआई का इस्तेमाल करते समय, अनुरोध कोड के लिए सिर्फ़ निचले बिट (0xFFFFसे नीचे) का इस्तेमाल करने की पाबंदी हटा दी गई है. (b/155518741)
दस्तावेज़ से जुड़े अपडेट
Fragment(@LayoutRes int)औरDialogFragment(@LayoutRes int)कंस्ट्रक्टर के बारे में ज़्यादा जानकारी दी गई है. इससे यह साफ़ तौर पर पता चलता है कि डिफ़ॉल्टFragmentFactoryका इस्तेमाल करते समय, उन्हें आपकी सबक्लास के नो आर्ग्युमेंट कंस्ट्रक्टर से कॉल किया जाना चाहिए. (b/153042497)
वर्शन 1.3.0-alpha04
29 अप्रैल, 2020
androidx.fragment:fragment:1.3.0-alpha04, androidx.fragment:fragment-ktx:1.3.0-alpha04, और androidx.fragment:fragment-testing:1.3.0-alpha04 रिलीज़ किए जाते हैं. वर्शन 1.3.0-alpha04 में ये बदलाव शामिल हैं.
नई सुविधाएं
FragmentManagerपर नए एपीआई के ज़रिए, दो फ़्रैगमेंट के बीच नतीजे पास करने की सुविधा जोड़ी गई. यह हैरारकी फ़्रैगमेंट (माता-पिता/बच्चे), DialogFragment, और नेविगेशन में मौजूद फ़्रैगमेंट के लिए काम करता है. साथ ही, यह पक्का करता है कि नतीजे सिर्फ़ आपके फ़्रैगमेंट को भेजे जाएं, जबकि वह कम से कमSTARTEDपर हो. (b/149787344)
एपीआई में हुए बदलाव
- टारगेट फ़्रैगमेंट एपीआई को बंद कर दिया गया है. फ़्रैगमेंट के बीच डेटा पास करने के लिए, नए Fragment Result API का इस्तेमाल किया जाना चाहिए. (b/149787344)
- Fragment पर मौजूद
startActivityForResult()/onActivityResult()औरrequestPermissions()/onRequestPermissionsResult()एपीआई बंद कर दिए गए हैं. कृपया Activity Result APIs का इस्तेमाल करें. (aosp/1290887) - ऐक्टिविटी
1.2.0-alpha04में नुकसान पहुंचा सकने वाला बदलाव:prepareCall()तरीके का नाम बदलकरregisterForActivityResult()कर दिया गया है. (aosp/1278717)
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट का
getViewLifecycleOwner()अबonSaveInstanceState()को कॉल करने से पहले बंद हो जाता है. इससे फ़्रैगमेंट के लाइफ़साइकल के व्यवहार का पता चलता है. (b/154645875) - अब किसी फ़्रैगमेंट पर
setMenuVisibility(false)को कॉल करने से, उसके चाइल्ड फ़्रैगमेंट के ज़रिए उपलब्ध कराए गए मेन्यू की दृश्यता में सही तरीके से बदलाव होता है. (b/153593580) FragmentContainerViewकी मदद से,DialogFragmentकी व्यू हैरारकी में फ़्रैगमेंट जोड़ते समय,illegalStateExceptionको ठीक किया गया. (b/154366601)- अब फ़्रैगमेंट को किसी गतिविधि से बाहर होस्ट करने पर, फ़्रैगमेंट पर मौजूद
getDefaultViewModelProviderFactory()तरीके का इस्तेमाल करने पर ऐप्लिकेशन क्रैश नहीं होता. (b/153762914)
वर्शन 1.3.0-alpha03
1 अप्रैल, 2020
androidx.fragment:fragment:1.3.0-alpha03, androidx.fragment:fragment-ktx:1.3.0-alpha03, और androidx.fragment:fragment-testing:1.3.0-alpha03 रिलीज़ किए जाते हैं. वर्शन 1.3.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
Fragmentपर पेमेंट केprepareCallतरीके अबfinalहो गए हैं. (b/152439361)
गड़बड़ियां ठीक की गईं
BottomSheetDialogFragmentका इस्तेमाल करते समय, Fragment1.3.0-alpha02में हुई रिग्रेशन की समस्या को ठीक किया गया है. (b/151652127, aosp/1263328, aosp/1265163)- कॉन्फ़िगरेशन में बदलाव करने के बाद, फ़्रैगमेंट से
prepareCallका इस्तेमाल करते समय क्रैश होने की समस्या ठीक की गई. (b/152137004) setTargetFragment()का इस्तेमाल करते समय, शेयर किए गए एलिमेंट और एक्ज़िट ट्रांज़िशन को अनदेखा किए जाने की समस्या को ठीक किया गया है. (b/152023196)- Fragment
1.2.4: Fragment के ProGuard नियमों को अपडेट किया गया है, ताकि बनाए रखे गए फ़्रैगमेंट को अस्पष्ट किया जा सके. (b/151605338) - Fragment
1.2.4से:DialogFragmentक्लास परFragmentLiveDataObserveLint नियम बंद कर दिया गया है, क्योंकि इनका लाइफ़साइकल और व्यू लाइफ़साइकल हमेशा सिंक में रहता है. इसलिए,observeको कॉल करते समयthisयाviewLifecycleOwnerमें से किसी एक का इस्तेमाल करना सुरक्षित होता है. (b/151765086)
डिपेंडेंसी में बदलाव
- फ़्रैगमेंट, गतिविधि
1.2.0-alpha03पर निर्भर करते हैं. इसमें, गतिविधि1.2.0-alpha02में पेश किए गए Activity Result API में काफ़ी सुधार किए गए हैं.
वर्शन 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)
गड़बड़ियां ठीक की गईं
- Fragment
1.2.3:DialogFragmentमें मौजूद एक गड़बड़ी को ठीक किया गया है. इसकी वजह से,onCreateDialog()सेgetLayoutInflater()को कॉल करने परStackOverflowErrorहोता था. (b/117894767, aosp/1258664) - Fragment
1.2.3: Fragment में शामिल ProGuard नियमों का दायरा कम किया गया है, ताकि यह पक्का किया जा सके कि इस्तेमाल न की गई Fragment क्लास को हटाया जा सके. (b/149665169) - फ़्रैगमेंट
1.2.3से:UseRequireInsteadOfGetLint चेक में फ़ॉल्स पॉज़िटिव की समस्या ठीक की गई. यह समस्या, Kotlin प्रॉपर्टी के नाम को शैडो करने वाले लोकल वैरिएबल के नाम का इस्तेमाल करने पर होती थी. (b/149891163) - फ़्रैगमेंट
1.2.3से: लेआउट की झलक में गलत कंस्ट्रक्टर का इस्तेमाल करने पर,FragmentContainerViewअबUnsupportedOperationExceptionनहीं दिखाता है. (b/149707833)
मौजूदा समस्याएं
BottomSheetDialogFragmentअब स्क्रीन पर डायलॉग को सही तरीके से नहीं दिखाता है. (b/151652127)
वर्शन 1.3.0-alpha01
4 मार्च, 2020
androidx.fragment:fragment:1.3.0-alpha01, androidx.fragment:fragment-ktx:1.3.0-alpha01, और androidx.fragment:fragment-testing:1.3.0-alpha01 रिलीज़ किए जाते हैं. वर्शन 1.3.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- लाइफ़साइकल
2.3.0-alpha01में जोड़े गएViewTreeLifecycleOwner.get(View)एपीआई के लिए सहायता जोड़ी गई है, ताकि यहonCreateView()से मिले किसी भी व्यू के लिए, फ़्रैगमेंट केviewLifecycleOwnerकोLifecycleOwnerके तौर पर दिखा सके. (aosp/1182955)
एपीआई में हुए बदलाव
- Fragments पर
setRetainInstance()तरीके का इस्तेमाल अब नहीं किया जा सकेगा. ViewModels के आने के बाद, डेवलपर के पास ऐसी स्थिति को बनाए रखने के लिए एक खास एपीआई होता है जिसे ऐक्टिविटी, फ़्रैगमेंट, और नेविगेशन ग्राफ़ से जोड़ा जा सकता है. इससे डेवलपर, सामान्य फ़्रैगमेंट का इस्तेमाल कर सकते हैं. साथ ही, वे अपनी पसंद की स्थिति को अलग रख सकते हैं. इससे, लीक होने के सामान्य सोर्स से बचा जा सकता है. साथ ही, सेव की गई स्थिति के एक बार बनने और मिटने की काम की प्रॉपर्टी को बनाए रखा जा सकता है. जैसे,ViewModelका कंस्ट्रक्टर और इसे मिलने वालाonCleared()कॉलबैक. (b/143911815) - ViewPager2
1.0.0के रिलीज़ होने के बाद,ViewPagerके साथ इंटरैक्ट करने के लिए इस्तेमाल की जाने वालीFragmentPagerAdapterऔरFragmentStatePagerAdapterक्लास को बंद कर दिया गया है. ViewPager से ViewPager2 पर माइग्रेट करना लेख पढ़ें. (b/145132715)
गड़बड़ियां ठीक की गईं
- Fragment ProGuard के नियम अब सिर्फ़ उन
Fragmentक्लास के डिफ़ॉल्ट कंस्ट्रक्टर को सही तरीके से सुरक्षित रखते हैं जिनका इस्तेमाल किया जाता है. ऐसा सभीFragmentइंस्टेंस के लिए नहीं किया जाता. इससे Fragment1.2.1में हुई रिग्रेशन की समस्या ठीक हो गई है. (b/149665169 - Fragment
1.2.2में जोड़े गएrequire___()लिंट के नियम, अब उन लोकल वैरिएबल पर फ़ॉल्स पॉज़िटिव नहीं होते जिनका नाम, शैडो की गई Kotlin प्रॉपर्टी के नामों (जैसे,view). (b/149891163) FragmentContainerViewअब Android Studio में लेआउट की झलक देखते समय,UnsupportedOperationExceptionनहीं दिखाता है. (b/149707833)- उस समस्या को ठीक किया गया है जिसमें सेव किए गए फ़्रैगमेंट को सेव करने के बाद जोड़े गए फ़्रैगमेंट, कॉन्फ़िगरेशन में हर बदलाव के बाद फिर से नहीं बनाए जाते थे और फिर उन्हें मिटा दिया जाता था. (b/145832397)
वर्शन 1.2.5
वर्शन 1.2.5
10 जून, 2020
androidx.fragment:fragment:1.2.5, androidx.fragment:fragment-ktx:1.2.5, और androidx.fragment:fragment-testing:1.2.5 रिलीज़ किए जाते हैं. वर्शन 1.2.5 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट का
getViewLifecycleOwner()अबonSaveInstanceState()को कॉल करने से पहले बंद हो जाता है. इससे फ़्रैगमेंट के लाइफ़साइकल के व्यवहार का पता चलता है. इसे पहले Fragment1.3.0-alpha04में रिलीज़ किया गया था. (b/154645875) - अब किसी फ़्रैगमेंट पर
setMenuVisibility(false)को कॉल करने से, उसके चाइल्ड फ़्रैगमेंट के ज़रिए उपलब्ध कराए गए मेन्यू की दृश्यता में सही तरीके से बदलाव होता है. इसे पहले Fragment1.3.0-alpha04में रिलीज़ किया गया था. (b/153593580)
वर्शन 1.2.4
वर्शन 1.2.4
1 अप्रैल, 2020
androidx.fragment:fragment:1.2.4, androidx.fragment:fragment-ktx:1.2.4, और androidx.fragment:fragment-testing:1.2.4 रिलीज़ किए जाते हैं. वर्शन 1.2.4 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Fragment ProGuard के नियमों को अपडेट किया गया है, ताकि बनाए रखे गए फ़्रैगमेंट को छिपाया जा सके. (b/151605338)
DialogFragmentक्लास परFragmentLiveDataObserveलिंट नियम बंद कर दिया गया है, क्योंकि इनका लाइफ़साइकल और व्यू लाइफ़साइकल हमेशा सिंक होता है. इसलिए,observeको कॉल करते समयthisयाviewLifecycleOwnerमें से किसी एक का इस्तेमाल करना सुरक्षित होता है. (b/151765086)
वर्शन 1.2.3
वर्शन 1.2.3
18 मार्च, 2020
androidx.fragment:fragment:1.2.3, androidx.fragment:fragment-ktx:1.2.3, और androidx.fragment:fragment-testing:1.2.3 रिलीज़ किए जाते हैं. वर्शन 1.2.3 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
DialogFragmentमें मौजूद उस गड़बड़ी को ठीक कर दिया गया है जिसकी वजह सेonCreateDialog()मेंgetLayoutInflater()को कॉल करने परStackOverflowErrorहोता था. (b/117894767, aosp/1258665)- Fragment में शामिल ProGuard के नियमों का दायरा कम किया गया है, ताकि इस्तेमाल न की गई Fragment क्लास को हटाया जा सके. (b/149665169)
UseRequireInsteadOfGetLint चेक में, Kotlin प्रॉपर्टी के नाम को शैडो करने वाले लोकल वैरिएबल के नाम का इस्तेमाल करने पर, गलत पॉज़िटिव ठीक किए गए. (b/149891163)FragmentContainerViewअब लेआउट की झलक देखने के लिए, गलत कंस्ट्रक्टर का इस्तेमाल करने परUnsupportedOperationExceptionनहीं दिखाता है. (b/149707833)
वर्शन 1.2.2
वर्शन 1.2.2
19 फ़रवरी, 2020
androidx.fragment:fragment:1.2.2, androidx.fragment:fragment-ktx:1.2.2, और androidx.fragment:fragment-testing:1.2.2 रिलीज़ किए जाते हैं. वर्शन 1.2.2 में ये बदलाव शामिल हैं.
लिंट की नई जांचें
- लिंट,
onCreateView(),onViewCreated(), औरonActivityCreated()मेंOnBackPressedDispatcherको कॉल करने के लिए,LifecycleOwnerके तौर परviewLifecycleOwnerका इस्तेमाल करने का सुझाव देता है. (b/142117657) - एक नई लिंट जांच जोड़ी गई है. इससे यह पुष्टि होती है कि
fragment-testingआर्टफ़ैक्ट का इस्तेमाल करते समय, सहीdebugImplementationका इस्तेमाल किया जा रहा है. (b/141500106) - फ़्रैगमेंट अब ज़्यादा जानकारी वाले गड़बड़ी के मैसेज के लिए,
checkNotNull(get___()),requireNonNull(get___())याget___()!!के बजाय, उनसे जुड़ेrequire___()तरीकों का इस्तेमाल करने का सुझाव देते हैं. ऐसा उन सभी Fragment API के लिए किया जाता है जिनमेंgetऔरrequire, दोनों शामिल हैं. (aosp/1202883)
गड़बड़ियां ठीक की गईं
- R8 की चेतावनियों से बचने के लिए, Fragment ProGuard फ़ाइलों को ठीक किया गया (b/148963981)
- मौजूदा लिंट चेक को बेहतर बनाया गया है. इसमें
observeका इस्तेमाल करते समय,viewLifecycleOwnerका इस्तेमाल करने का सुझाव दिया गया है. इससेobserveकेlivedata-ktxएक्सटेंशन मेथड वर्शन को भी हैंडल किया जा सकेगा. (b/148996309) - लिंट की कई जांचों के लिए फ़ॉर्मैटिंग ठीक की गई (aosp/1157012)
बाहरी योगदान
- Slack की ओर से
require___()Lint की जांच करने में योगदान देने के लिए, Zac Sweers को धन्यवाद! (aosp/1202883)
वर्शन 1.2.1
वर्शन 1.2.1
5 फ़रवरी, 2020
androidx.fragment:fragment:1.2.1, androidx.fragment:fragment-ktx:1.2.1, और androidx.fragment:fragment-testing:1.2.1 रिलीज़ किए जाते हैं. वर्शन 1.2.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
addऔरreplaceतरीकों से जोड़े गए फ़्रैगमेंट, अब अपने डिफ़ॉल्ट कंस्ट्रक्टर को ProGuard के साथ रखते हैं. ये फ़्रैगमेंट,Classइंस्टेंस (या Kotlin के रीफ़ाइड वर्शन) लेते हैं. (b/148181315)finishUpdate()को चलाने पर,FragmentStatePagerAdapterऔरFragmentPagerAdapterअबFragmentManagerसे मिले अपवादों को नहीं पकड़ते. (aosp/1208711)- उस समस्या को ठीक किया गया है जिसकी वजह से
FragmentManager.findFragment(),<fragment>टैग के ज़रिए जोड़े गए फ़्रैगमेंट के साथ काम नहीं करता था. (b/147784323) <fragment>टैग का इस्तेमाल करके बड़े किए गए फ़्रैगमेंट को अब लेआउट में होने पर, हमेशाonCreate()से पहलेonInflate()को कॉल मिलता है. (aosp/1215856)- जब ऐक्टिविटी पहले से ही बंद हो चुकी होती है, तब
FragmentManagerइंस्टेंस परtoString()को कॉल करने पर अबNullPointerExceptionनहीं दिखता. (b/148189412)
डिपेंडेंसी में बदलाव
- फ़्रैगमेंट
1.2.1अब लाइफ़साइकल ViewModel SavedState2.2.0पर निर्भर करता है.
वर्शन 1.2.0
वर्शन 1.2.0
22 जनवरी, 2020
androidx.fragment:fragment:1.2.0, androidx.fragment:fragment-ktx:1.2.0, और androidx.fragment:fragment-testing:1.2.0 रिलीज़ किए जाते हैं. वर्शन 1.2.0 में ये बदलाव शामिल हैं.
1.1.0 के बाद हुए अहम बदलाव
- FragmentContainerView:
FragmentContainerView, डाइनैमिक तरीके से जोड़े गए फ़्रैगमेंट के लिए सबसे सही कंटेनर है. यहFrameLayoutया अन्य लेआउट की जगह इस्तेमाल किया जाता है. यह<fragment>टैग की तरह हीclass,android:name, औरandroid:tag(वैकल्पिक) का इस्तेमाल करता है. हालांकि, यह शुरुआती फ़्रैगमेंट को जोड़ने के लिए,<fragment>के कस्टम कोड पाथ के बजाय सामान्यFragmentTransactionका इस्तेमाल करता है. onDestroyView()का समय: अब फ़्रैगमेंट,onDestroyView()को कॉल करने से पहले, एक्ज़िट ऐनिमेशन, एक्ज़िट फ़्रेमवर्क ट्रांज़िशन, और एक्ज़िट AndroidX ट्रांज़िशन (ट्रांज़िशन1.3.0का इस्तेमाल करते समय) के पूरा होने का इंतज़ार करते हैं.- क्लास पर आधारित
add()औरreplace():FragmentTransactionपरadd()औरreplace()के नए ओवरलोड जोड़े गए हैं. येClass<? extends Fragment>औरBundleके वैकल्पिक आर्ग्युमेंट लेते हैं. ये तरीके, जोड़ने के लिए Fragment का इंस्टेंस बनाने के लिए, आपकेFragmentFactoryका इस्तेमाल करते हैं. रीफ़ाइड टाइप (यानी किfragmentTransaction.replace<YourFragment>(R.id.container)) का इस्तेमाल करने वाले Kotlin एक्सटेंशन को भीfragment-ktxमें जोड़ा गया है. - Lifecycle ViewModel SavedState इंटिग्रेशन:
by viewModels()का इस्तेमाल करते समय, अबSavedStateViewModelFactoryडिफ़ॉल्ट फ़ैक्ट्री के तौर पर इस्तेमाल की जाती है. इसका इस्तेमालby activityViewModels(),ViewModelProviderकंस्ट्रक्टर या फ़्रैगमेंट के साथViewModelProviders.of()के लिए भी किया जाता है. - लिंट की नई जांच: लिंट की एक नई जांच जोड़ी गई है. इससे यह पक्का किया जा सकेगा कि
onCreateView(),onViewCreated()याonActivityCreated()सेLiveDataको मॉनिटर करते समय,getViewLifecycleOwner()का इस्तेमाल किया जा रहा हो. getFragmentManager()बंद होना: Fragment पर मौजूदgetFragmentManager()औरrequireFragmentManager()तरीकों को बंद कर दिया गया है. इनकी जगहgetParentFragmentManager()तरीके का इस्तेमाल किया जा सकता है. यह तरीका, Fragment को जोड़े गए नॉन-शून्यFragmentManagerको दिखाता है.isAdded()का इस्तेमाल करके यह पता लगाया जा सकता है कि इसे कॉल करना सुरक्षित है या नहीं.FragmentManager.enableDebugLogging()बंद होना: स्टैटिकFragmentManager.enableDebugLoggingतरीका बंद कर दिया गया है. FragmentManager अब टैगFragmentManagerके लिएLog.isLoggable()का पालन करता है. इससे आपको अपने ऐप्लिकेशन को फिर से कंपाइल किए बिना,DEBUGयाVERBOSEलॉगिंग को चालू करने की सुविधा मिलती है.
मौजूदा समस्याएं
- सिर्फ़
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सेट करने से, चाइल्ड FragmentManager पर भी असर पड़ेगा. (aosp/1170095)
डिपेंडेंसी में बदलाव
- अब फ़्रैगमेंट, लाइफ़साइकल
2.2.0-rc03, लाइफ़साइकल ViewModel SavedState1.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का इस्तेमाल करता है. यह सुविधा Fragment1.2.0-rc01में जोड़ी गई थी. (aosp/1143821)
वर्शन 1.2.0-rc01
23 अक्टूबर, 2019
androidx.fragment:fragment:1.2.0-rc01, androidx.fragment:fragment-ktx:1.2.0-rc01, और androidx.fragment:fragment-testing:1.2.0-rc01 रिलीज़ किए जाते हैं. वर्शन 1.2.0-rc01 में ये बदलाव शामिल हैं.
नई सुविधाएं
FragmentContainerViewअबandroid:nameके साथ-साथclassएट्रिब्यूट के साथ भी काम करता है. यह<fragment>टैग की तरह ही काम करता है. (b/142722242)- नया Lint चेक जोड़ा गया है. इससे यह पक्का किया जा सकेगा कि
onCreateView(),onViewCreated()याonActivityCreated()सेLiveDataको मॉनिटर करते समय,getViewLifecycleOwner()का इस्तेमाल किया जा रहा हो. (b/137122478)
गड़बड़ियां ठीक की गईं
DialogFragmentपर मौजूदonDismissऔरonCancelकॉलबैक अब यह गारंटी देते हैं कि उन्हें पास किया गयाDialogInterface, शून्य नहीं है. साथ ही, जब उन्हें लागू किया जाता है, तोgetDialog()शून्य नहीं होता. (b/141974033)FragmentContainerViewअबclassयाandroid:nameसे तय किए गए फ़्रैगमेंट को इन्फ़्लेशन के हिस्से के तौर पर जोड़ता है. इससे यह पक्का होता है किfindFragmentById()औरfindFragmentByTag()इसके तुरंत बाद काम करें. (b/142520327)- स्टेट सेव होने की वजह से,
FragmentContainerViewमें मौजूदIllegalStateExceptionको ठीक किया गया. (b/142580713) FragmentContainerViewक्लास को अस्पष्ट किए जाने पर,FragmentContainerViewमें मौजूदUnsupportedOperationExceptionको ठीक किया गया है. (b/142657034)
पहले से मालूम समस्याएं
- सिर्फ़
FragmentContainerViewपरclassयाandroid:nameएट्रिब्यूट के ज़रिए रेफ़र किए गए फ़्रैगमेंट को ProGuard अपने-आप नहीं रखता. इसलिए, आपको हर फ़्रैगमेंट क्लास के लिए, मैन्युअल तरीके से कीप नियम जोड़ना होगा. हमने Lint के उस नियम को बंद कर दिया है जिसमेंFragmentContainerViewपर माइग्रेट करने का सुझाव दिया जाता है. ऐसा तब तक किया गया है, जब तकaapt2के ज़रिए इस समस्या को ठीक नहीं कर लिया जाता. (b/142601969)
वर्शन 1.2.0-beta02
11 अक्टूबर, 2019
androidx.fragment:fragment:1.2.0-beta02, androidx.fragment:fragment-ktx:1.2.0-beta02, और androidx.fragment:fragment-testing:1.2.0-beta02 रिलीज़ किए जाते हैं. वर्शन 1.2.0-beta02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें फ़्रैगमेंट के
onInflate()कोFragmentContainerViewसे सही एट्रिब्यूट नहीं मिलते थे. इससेNavHostFragmentजैसे मामलों में समस्या आ रही थी. (b/142421837)
वर्शन 1.2.0-beta01
9 अक्टूबर, 2019
androidx.fragment:fragment:1.2.0-beta01, androidx.fragment:fragment-ktx:1.2.0-beta01, और androidx.fragment:fragment-testing:1.2.0-beta01 रिलीज़ किए जाते हैं. वर्शन 1.2.0-beta01 में ये बदलाव शामिल हैं.
नई सुविधाएं
FragmentContainerViewकी मदद से, शुरुआती फ़्रैगमेंट जोड़ा जा सकता है. साथ ही,android:nameऔर वैकल्पिकandroid:tagएक्सएमएल एट्रिब्यूट के लिए भी सहायता जोड़ी जा सकती है.<fragment>टैग के उलट,FragmentContainerViewशुरुआती फ़्रैगमेंट जोड़ने के लिए, सामान्यFragmentTransactionका इस्तेमाल करता है. इससेFragmentContainerViewपरFragmentTransactionकी अन्य कार्रवाइयां की जा सकती हैं. साथ ही, लेआउट के लिए View Binding का इस्तेमाल किया जा सकता है. (b/139830628, b/141177981)- Fragments में अब Lint की चेतावनी शामिल है. इससे
<fragment>कोFragmentContainerViewसे बदलने का सुझाव मिलता है. (b/139830056)
गड़बड़ियां ठीक की गईं
androidx.transitionका इस्तेमाल करते समय,ClassCastExceptionसे जुड़ी समस्या ठीक की गई. (b/140680619)- ट्रांज़िशन
1.3.0-beta01का इस्तेमाल करते समय, फ़्रैगमेंट अबandroidx.transitionट्रांज़िशन के खत्म होने का इंतज़ार करते हैं. इसके अलावा, फ़्रेमवर्क ट्रांज़िशन और ऐनिमेशन के खत्म होने का इंतज़ार करते हैं. इन दोनों को फ़्रैगमेंट1.2.0-alpha03और फ़्रैगमेंट1.2.0-alpha02में ठीक किया गया था. इसके बाद,onDestroyView()को डिसपैच किया जाता है. (aosp/1119841) - ट्रांज़िशन
1.3.0-beta01का इस्तेमाल करते समय, फ़्रैगमेंट अब एक ही कंटेनर पर नए ट्रांज़िशन / ऐनिमेशन शुरू करने से पहले,androidx.transitionट्रांज़िशन को सही तरीके से रद्द कर देते हैं. (aosp/1119841) - एपीआई 17 और इससे पहले के वर्शन में,
androidx.transitionका इस्तेमाल करते समय, फ़्रैगमेंट के रूट व्यू परandroidx.transitionट्रांज़िशन का इस्तेमाल करने से जुड़ी समस्या को ठीक किया गया है.FragmentContainerView(b/140361893) fragment-testingआर्टफ़ैक्ट अब AndroidX Test1.2.0पर निर्भर करता है. इससे Espresso 3.2.0 के नए वर्शन के साथ काम न करने की समस्या ठीक हो गई है. (b/139100149)- FragmentManager में
Log.wका इस्तेमाल बंद कर दिया गया है. (aosp/1126468)
पहले से मालूम समस्याएं
- फ़्रैगमेंट के
onInflate()कोFragmentContainerViewसे सही एट्रिब्यूट नहीं मिलते हैं. इससेNavHostFragmentजैसे मामले टूट जाते हैं. (b/142421837)
वर्शन 1.2.0-alpha04
18 सितंबर, 2019
androidx.fragment:fragment:1.2.0-alpha04, androidx.fragment-ktx:example:1.2.0-alpha04, और androidx.fragment:fragment-testing:1.2.0-alpha04 रिलीज़ किए जाते हैं. वर्शन 1.2.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
FragmentपरgetFragmentManager()औरrequireFragmentManager()तरीकों को बंद कर दिया गया है. इनकी जगहgetParentFragmentManager()तरीके का इस्तेमाल किया जा सकता है. यह तरीका, उसFragmentManagerको दिखाता है जिसमें Fragment जोड़ा गया है. हालांकि, यह तरीका सिर्फ़ तब काम करता है, जबFragmentManagerशून्य न हो.isAdded()का इस्तेमाल करके यह पता लगाया जा सकता है किgetParentFragmentManager()तरीके को कॉल करना सुरक्षित है या नहीं. (b/140574496)- स्टैटिक
FragmentManager.enableDebugLoggingतरीके को बंद कर दिया गया है. FragmentManager अबFragmentManagerटैग के लिएLog.isLoggable()का पालन करता है. इससे आपको अपने ऐप्लिकेशन को फिर से कंपाइल किए बिना,DEBUGयाVERBOSEलॉगिंग को चालू करने की सुविधा मिलती है. (aosp/1116591)
गड़बड़ियां ठीक की गईं
- अब अन्य फ़्रैगमेंट पर एग्ज़िट ऐनिमेशन चलने के दौरान, फ़्रैगमेंट सही तरीके से बंद हो जाते हैं. (b/140574199)
- उस समस्या को ठीक किया गया है जिसकी वजह से फ़्रैगमेंट,
Activity.findViewById()को कॉल करते थे. हालांकि, पहले ऐसा नहीं होता था. (aosp/1116431)
वर्शन 1.2.0-alpha03
5 सितंबर, 2019
androidx.fragment:fragment:1.2.0-alpha03, androidx.fragment:fragment-ktx:1.2.0-alpha03, और androidx.fragment:fragment-testing:1.2.0-alpha03 रिलीज़ किए जाते हैं. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
एपीआई में हुए बदलाव
FragmentContainerViewअबfinalहै. (b/140133091)
गड़बड़ियां ठीक की गईं
- बैक स्टैक से फ़्रैगमेंट हटाने पर,
FragmentContainerViewअब ड्रॉ करने के क्रम को सही तरीके से उलट देता है. (b/139104187) - उस समस्या को ठीक कर दिया गया है जिसकी वजह से, फ़्रैगमेंट को पॉप करते समय और नया फ़्रैगमेंट जोड़ते समय, गलत ऐनिमेशन चलता था. (b/111659726)
- Fragment
1.2.0-alpha02में, ऐनिमेशन से जुड़ी समस्या को ठीक कर दिया गया था. अब फ़्रैगमेंट,onDestroyView()को भेजने से पहले ट्रांज़िशन के पूरा होने का इंतज़ार करते हैं. (b/138741697)
वर्शन 1.2.0-alpha02
7 अगस्त, 2019
androidx.fragment:fragment:1.2.0-alpha02, androidx.fragment:fragment-ktx:1.2.0-alpha02, और androidx.fragment:fragment-testing:11.2.0-alpha02 रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
नई सुविधाएं
by viewModels(),by activityViewModels(),ViewModelProviderकंस्ट्रक्टर याFragmentके साथViewModelProviders.of()का इस्तेमाल करते समय, अबSavedStateViewModelFactoryका इस्तेमाल डिफ़ॉल्ट फ़ैक्ट्री के तौर पर किया जाता है. (b/135716331)FragmentTransactionपरsetTransitionके साथTRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSE,TRANSIT_FRAGMENT_FADEका इस्तेमाल करने पर दिखने वाले डिफ़ॉल्ट ऐनिमेशन को अपडेट कर दिया गया है. अब ये ऐनिमेशन, Android 10 वाले डिवाइसों पर ऐक्टिविटी के दौरान इस्तेमाल किए जाने वाले ऐनिमेशन से मेल खाते हैं. (aosp/1012812, aosp/1014730)
एपीआई में हुए बदलाव
FragmentContainerViewको डाइनैमिक तरीके से जोड़े गए फ़्रैगमेंट के लिए, सबसे ज़्यादा सुझाव दिए गए कंटेनर के तौर पर पेश किया गया है. यहFrameLayoutवगैरह के इस्तेमाल की जगह लेता है. ऐसा इसलिए, क्योंकि यह एनिमेशन के z-ऑर्डरिंग की समस्याओं को ठीक करता है और फ़्रैगमेंट को विंडो इंसर्ट भेजता है. (b/37036000, aosp/985243, b/136494650)- हमने एक स्टैटिक
FragmentManager.findFragment(View)तरीका जोड़ा है. इससे, फ़्रैगमेंट से बढ़ाए गए व्यू से, फ़्रैगमेंट को वापस पाया जा सकता है. Kotlin एक्सटेंशन भीfragment-ktxमें उपलब्ध है. (aosp/1090757) FragmentTransactionपरadd()औरreplace()के नए ओवरलोड जोड़े गए हैं. येClass<? extends Fragment>औरBundleआर्ग्युमेंट लेते हैं. ये तरीके, जोड़ने के लिए Fragment का इंस्टेंस बनाने के लिए, आपकेFragmentFactoryका इस्तेमाल करते हैं.fragment-ktxमें, Kotlin एक्सटेंशन भी जोड़े गए हैं.ये एक्सटेंशन, रीफ़ाइड टाइप (यानी किfragmentTransaction.replace<YourFragment>(R.id.container)) का इस्तेमाल करते हैं. (b/126124987)Fragmentलाइफ़साइकल कॉलबैक में@MainThreadएनोटेशन जोड़े गए हैं. (b/127272564)FragmentTransactionऔरFragmentManager.BackStackEntryपर ब्रेडक्रंब के टाइटल से जुड़े एपीआई अब काम नहीं करेंगे. (b/138252944)FragmentTransactionपरsetTransitionStyleतरीका अब काम नहीं करता. (aosp/1011537)FragmentManagerमें दिए गए कई तरीके अबabstractनहीं हैं.FragmentManagerखुदabstractबना रहता है. इसे सीधे तौर पर इंस्टैंटिएट या बढ़ाया नहीं जाना चाहिए. आपको सिर्फ़getSupportFragmentManager(),getChildFragmentManager()वगैरह से मौजूदा इंस्टेंस मिलता रहेगा.
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट
1.1.0-rc04से: फ़्रैगमेंट अब फ़्रैगमेंट पर रोकी गई ट्रांज़िशन को सही तरीके से रद्द करते हैं. (b/138251858) - फ़्रैगमेंट
1.1.0-rc03: उस समस्या को ठीक किया गया है जिसमें टाइम आउट को एक से ज़्यादा बार कॉल करने पर, पिछले टाइम आउट रद्द नहीं होते थे.postponeEnterTransition()(b/137797118) - Fragment
1.1.0-rc02: मौजूदा आइटम को हटाते समय,FragmentPagerAdapterऔरFragmentStatePagerAdapterमें क्रैश होने की समस्या को ठीक किया गया है. (b/137209870) - अब फ़्रैगमेंट,
onDestroyView()को भेजने से पहले ऐनिमेशन के पूरा होने का इंतज़ार करते हैं. (b/136110528) - पैरंट फ़्रैगमेंट को ऐनिमेट करते समय, चाइल्ड फ़्रैगमेंट और उनके डिसेंडेंट के फ़्रैगमेंट ऐनिमेशन को अब सही तरीके से हैंडल किया जाता है. (b/116675313)
- शेयर किए गए एलिमेंट ट्रांज़िशन का इस्तेमाल करते समय, पॉप और ऐड ऑपरेशन को एक साथ इस्तेमाल करने पर होने वाली
NullPointerExceptionको ठीक किया गया है. (b/120507394) - Robolectric टेस्ट में
FragmentPagerAdapterऔरFragmentStatePagerAdapterका इस्तेमाल करते समय,IllegalStateExceptions के लिए एक तरीका जोड़ा गया. (b/137201343)
वर्शन 1.2.0-alpha01
2 जुलाई, 2019
androidx.fragment:fragment:1.2.0-alpha01, androidx.fragment:fragment-ktx:1.2.0-alpha01, और androidx.fragment:fragment-testing:1.2.0-alpha01 रिलीज़ किए जाते हैं. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
नई सुविधाएं
- FragmentManager अब Fragment के व्यू को अटैच करने के बाद और
onViewCreated()को कॉल करने से ठीक पहले,requestApplyInsets()को कॉल करता है. इससे यह पक्का होता है कि आपके व्यू में हमेशा सही इंसर्ट मौजूद हों. (b/135945162)
गड़बड़ियां ठीक की गईं
replace()से पहलेsetPrimaryNavigationFragment()का इस्तेमाल करने वालेFragmentTransactionको पॉप अप करते समय,NullPointerExceptionको ठीक किया गया. (b/134673465)
वर्शन 1.1.0
वर्शन 1.1.0
5 सितंबर, 2019
androidx.fragment:fragment:1.1.0, androidx.fragment:fragment-ktx:1.1.0, और androidx.fragment:fragment-testing:1.1.0 रिलीज़ किए जाते हैं. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
1.0.0 के बाद हुए अहम बदलाव
- fragment-testing:
fragment-testingआर्टफ़ैक्ट, किसी फ़्रैगमेंट को अलग से टेस्ट करने के लिएFragmentScenarioक्लास उपलब्ध कराता है. ज़्यादा जानकारी के लिए, अपने ऐप्लिकेशन के फ़्रैगमेंट की जांच करने से जुड़ा दस्तावेज़ देखें. - FragmentFactory: अब
FragmentManagerपरFragmentFactoryसेट किया जा सकता है, ताकि फ़्रैगमेंट इंस्टेंस बनाने की प्रोसेस को मैनेज किया जा सके. इससे, नो-आर्ग्युमेंट कंस्ट्रक्टर की ज़रूरत नहीं पड़ती. - ViewModels के लिए Kotlin प्रॉपर्टी डेलिगेट:
fragment-ktxआर्टफ़ैक्ट में अब दो Kotlin प्रॉपर्टी डेलिगेट शामिल हैं:by viewModels()का इस्तेमाल, किसी फ़्रैगमेंट से जुड़े ViewModels को ऐक्सेस करने के लिए किया जाता है. वहीं,by activityViewModels()का इस्तेमाल, ऐक्टिविटी के स्कोप वाले ViewModels को ऐक्सेस करने के लिए किया जाता है. - ज़्यादा से ज़्यादा लाइफ़साइकल: अब किसी फ़्रैगमेंट के लिए, ज़्यादा से ज़्यादा लाइफ़साइकल की स्थिति सेट की जा सकती है. इसके लिए,
FragmentTransactionपरsetMaxLifecycle()को कॉल करें. यह अब काम न करने वालेsetUserVisibleHint()की जगह ले लेगा.FragmentPagerAdapterऔरFragmentStatePagerAdapterमें एक नया कंस्ट्रक्टर है. इसकी मदद से, नए बिहेवियर पर स्विच किया जा सकता है. - FragmentActivity LayoutId कंस्ट्रक्टर:
FragmentActivityकी सबक्लास अबFragmentActivityपर कंस्ट्रक्टर को कॉल कर सकती हैं. यह कंस्ट्रक्टर,R.layoutआईडी लेता है. इससे पता चलता है किonCreate()मेंsetContentView()को कॉल करने के बजाय, कॉन्टेंट व्यू के तौर पर कौनसे लेआउट को सेट किया जाना चाहिए. इससे इस ज़रूरत पर कोई असर नहीं पड़ता कि आपकी सबक्लास में नो-आर्ग्युमेंट कंस्ट्रक्टर होना चाहिए. - Fragment LayoutId constructor:
Fragmentकी सबक्लास अबFragmentपर मौजूद कंस्ट्रक्टर को कॉल कर सकती हैं. यह कंस्ट्रक्टर,R.layoutआईडी लेता है. इससे पता चलता है किonCreateView()को बदलने के बजाय, इस फ़्रैगमेंट के लिए किस लेआउट का इस्तेमाल किया जाना चाहिए. बड़े किए गए लेआउट कोonViewCreated()में कॉन्फ़िगर किया जा सकता है. - टाइम आउट के साथ बाद में करें:
postponeEnterTransition()का नया ओवरलोड जोड़ा गया है, जिसे टाइम आउट किया गया है.
वर्शन 1.1.0-rc04
7 अगस्त, 2019
androidx.fragment:fragment:1.1.0-rc04, androidx.fragment:fragment-ktx:1.1.0-rc04, और androidx.fragment:fragment-testing:1.1.0-rc04 रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
गड़बड़ियां ठीक की गईं
- अब फ़्रैगमेंट, फ़्रैगमेंट पर पोस्टपोन किए गए ट्रांज़िशन को सही तरीके से रद्द करते हैं. (b/138251858)
वर्शन 1.1.0-rc03
19 जुलाई, 2019
androidx.fragment:fragment:1.1.0-rc03, androidx.fragment:fragment-ktx:1.1.0-rc03, और androidx.fragment:fragment-testing:1.1.0-rc03 रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें एक से ज़्यादा बार टाइम आउट होने पर,
postponeEnterTransition()को कॉल करने से पिछले टाइम आउट रद्द नहीं होते थे. (b/137797118)
वर्शन 1.1.0-rc02
17 जुलाई, 2019
androidx.fragment:fragment:1.1.0-rc02, androidx.fragment:fragment-ktx:1.1.0-rc02, और androidx.fragment-testing:fragment:1.1.0-rc02 रिलीज़ किए जाते हैं. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
गड़बड़ियां ठीक की गईं
FragmentPagerAdapterऔरFragmentStatePagerAdapterमें, मौजूदा आइटम को हटाते समय क्रैश होने की समस्या को ठीक किया गया है. (b/137209870)
वर्शन 1.1.0-rc01
2 जुलाई, 2019
androidx.fragment:fragment:1.1.0-rc01, androidx.fragment:fragment-ktx:1.1.0-rc01, और androidx.fragment:fragment-testing:1.1.0-rc01 रिलीज़ किए जाते हैं. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
गड़बड़ियां ठीक की गईं
- ट्रांज़िशन के दौरान
show()याhide()कार्रवाइयों का इस्तेमाल करने पर, फ़्रैगमेंट अब अपनी दृश्यता को सही तरीके से अपडेट करते हैं. (b/133385058) replace()से पहलेsetPrimaryNavigationFragment()का इस्तेमाल करने वालेFragmentTransactionको पॉप अप करते समय,NullPointerExceptionको ठीक किया गया. (b/134673465)
वर्शन 1.1.0-beta01
5 जून, 2019
androidx.fragment:fragment:1.1.0-beta01, androidx.fragment:fragment-ktx:1.1.0-beta01, और androidx.fragment:fragment-testing:1.1.0-beta01 रिलीज़ किए जाते हैं. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
गड़बड़ियां ठीक की गईं
- नेस्ट किए गए फ़्रैगमेंट के लिए,
androidx.lifecycle.Lifecycleकॉलबैक (खास तौर परSTARTED,RESUMED,PAUSED,STOPPED, औरDESTROYEDसे जुड़े) अब सही तरीके से नेस्ट किए गए हैं. (b/133497591) - अब फ़्रैगमेंट के
onCreate()में रजिस्टर किए गएOnBackPressedCallbackइंस्टेंस, चाइल्ड फ़्रैगमेंट मैनेजर पर सही तरीके से लागू होते हैं. (b/133175997) - पैरंट फ़्रैगमेंट को बदलने पर, चाइल्ड फ़्रैगमेंट अब ऐनिमेट नहीं होते हैं. (b/121017790)
animateLayoutChanges="true"का इस्तेमाल करते समय, फ़्रैगमेंट के ऐनिमेशन और ट्रांज़िशन को अब अनदेखा कर दिया जाता है. इससे उस समस्या को ठीक किया गया है जिसमें फ़्रैगमेंट सही तरीके से डिस्ट्रॉय नहीं होते थे. (b/116257087)
वर्शन 1.1.0-alpha09
16 मई, 2019
androidx.fragment:fragment:1.1.0-alpha09, androidx.fragment:fragment-ktx:1.1.0-alpha09, और androidx.fragment:fragment-testing:1.1.0-alpha09 रिलीज़ किए जाते हैं. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
एपीआई में हुए बदलाव
- प्राइमरी नेविगेशन फ़्रैगमेंट में बदलाव होने पर, फ़्रैगमेंट को अब नए
onPrimaryNavigationFragmentChanged(boolean)तरीके से कॉलबैक मिलता है. aosp/960857
गड़बड़ियां ठीक की गईं
- चाइल्ड फ़्रैगमेंट की वजह से बढ़े हुए मेन्यू आइटम अब पैरंट फ़्रैगमेंट को हटाने पर सही तरीके से हटा दिए जाते हैं. b/131581013
वर्शन 1.1.0-alpha08
7 मई, 2019
androidx.fragment:fragment:1.1.0-alpha08, androidx.fragment:fragment-ktx:1.1.0-alpha08, और androidx.fragment:fragment-testing:1.1.0-alpha08 रिलीज़ किए जाते हैं. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
यह रिलीज़, Preferences 1.1.0-alpha01 से लेकर 1.1.0-alpha04 तक के वर्शन के साथ काम नहीं करती. Fragments के इस वर्शन का इस्तेमाल करते समय, कृपया Preferences 1.1.0-alpha05 पर अपग्रेड करें.
नई सुविधाएं
postponeEnterTransition()का नया ओवरलोड जोड़ा गया है. यह एक टाइमआउट लेता है, जिसके बाद फ़्रैगमेंट अपने-आपstartPostponedEnterTransition()b/120803208 को कॉल करेगा
एपीआई में हुए बदलाव
- बदलाव: पहले से बंद किए जा चुके
FragmentFactoryinstantiateतरीके को हटा दिया गया है. यह तरीका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/131557151setMaxLifecycle(Lifecycle.State.CREATED)का इस्तेमाल करने पर, फ़्रैगमेंट के व्यू सही तरीके से डिस्ट्रॉय हो जाएंगे. aosp/954180
वर्शन 1.1.0-alpha07
25 अप्रैल, 2019
androidx.fragment:fragment:1.1.0-alpha07, androidx.fragment:fragment-ktx:1.1.0-alpha07, और androidx.fragment:fragment-testing:1.1.0-alpha07 रिलीज़ किए जाते हैं. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
नई सुविधाएं
- अब
FragmentTransactionपरsetMaxLifecycle()को कॉल करके, किसी फ़्रैगमेंट के लिए ज़्यादा से ज़्यादा लाइफ़साइकल की स्थिति सेट की जा सकती है. यह अब काम न करने वालेsetUserVisibleHint()की जगह ले लेगा.FragmentPagerAdapterऔरFragmentStatePagerAdapterमें एक नया कंस्ट्रक्टर है. इसकी मदद से, नए बिहेवियर पर स्विच किया जा सकता है. (b/129780800)
एपीआई में हुए बदलाव
moveToState(STARTED)को अब सिर्फ़ API 24 या इसके बाद के वर्शन वाले डिवाइसों पर कॉल किया जा सकता है.FragmentScenario(b/129880016)
व्यवहार में बदलाव
- (b/129907905) की वजह से, बैक स्टैक पर मौजूद फ़्रैगमेंट को
onCreateView()पर कॉलबैक नहीं मिलेगा. ऐसा तब होगा, जब होस्टिंग ऐक्टिविटी को फिर से बनाया जाएगा.onCreateView()को अब सिर्फ़ तब कॉल किया जाएगा, जब फ़्रैगमेंट दिखने लगेगा. इसका मतलब है कि बैक स्टैक को पॉप किया गया है.
गड़बड़ियां ठीक की गईं
- एक्सएमएल में
<fragment>टैग औरFragmentActivityयाAppCompatActivityकेcontentLayoutIdकंस्ट्रक्टर का इस्तेमाल करते समय होने वाली समस्या को ठीक किया गया है. (b/129907905) - उस समस्या को ठीक किया गया है जिसमें कॉन्फ़िगरेशन में बदलाव के बाद, बैक स्टैक पर मौजूद फ़्रैगमेंट कम से कम
CREATEDपर नहीं ले जाए जाते थे. इस वजह से, ViewModels और चाइल्ड रीटेन किए गए फ़्रैगमेंट को सही तरीके से हटाया नहीं जाता था. (b/129593351) - इंस्टेंस की स्थिति सेव होने के बाद, बनाए रखे गए फ़्रैगमेंट के डिसिंक होने की वजह से,
restoreSaveStateमें क्रैश होने की समस्या को ठीक किया गया है. (b/130433793) (aosp/947824) - उन समस्याओं को ठीक किया गया है जिनमें फ़्रैगमेंट लाइफ़साइकल के साथ जोड़े गए
OnBackPressedCallbackको तब कॉल नहीं किया जाता था, जबFragmentManagerमें बैक स्टैक होता था. ज़्यादा जानकारी के लिए, androidx.activity 1.0.0-alpha07 देखें. (aosp/948209) - फ़्रैगमेंट अब ऐनिमेशन के लिए
LAYER_TYPE_HARDWAREलागू नहीं करते. अगर आपको खास तौर पर हार्डवेयर लेयर वाला ऐनिमेशन चाहिए, तो कृपया इसे अपने ऐनिमेशन के हिस्से के तौर पर सेट करें. (b/129486478)
वर्शन 1.1.0-alpha06
3 अप्रैल, 2019
androidx.fragment:fragment:1.1.0-alpha06, androidx.fragment:fragment-ktx:1.1.0-alpha06, और androidx.fragment:fragment-testing:1.1.0-alpha06 रिलीज़ किए जाते हैं. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
नई सुविधाएं
- FragmentManager से थ्रो किए गए अपवादों में, अब मैसेज में फ़्रैगमेंट का नाम शामिल होता है. (b/67759402)
एपीआई में हुए बदलाव
FragmentऔरFragmentActivityमें अब एक दूसरा कंस्ट्रक्टर शामिल है, जो@LayoutRes intलेता है. यह आपकी क्लास को@ContentViewसे एनोटेट करने के पिछले तरीके की जगह लेता है. यह तरीका, ऐप्लिकेशन और लाइब्रेरी मॉड्यूल, दोनों में काम करता है. (b/128352521)- FragmentActivity के
onActivityResult()को अब@CallSuperके तौर पर सही तरीके से मार्क किया गया है. (b/127971684) - FragmentFactory का
instantiateतरीका, Bundle आर्ग्युमेंट लेता है. इसे अब इस्तेमाल नहीं किया जा सकता. ऐप्लिकेशन कोinstantiateके नए ओवरलोड का इस्तेमाल करना चाहिए, जो Bundle नहीं लेता. (b/128836103) FragmentScenarioतरीकों को अब@StyleResके साथ सही तरीके से एनोटेट किया गया है. (aosp/924193)FragmentTabHostका अब इस्तेमाल नहीं किया जा सकता. (b/127971835)- FragmentActivity के
getThemedContext()को हटा दिया गया है. (aosp/934078)
गड़बड़ियां ठीक की गईं
- 1.1.0-alpha05 वर्शन में हुई रिग्रेशन की समस्या को ठीक किया गया है. इस समस्या की वजह से, स्क्रीन पर आने वाला फ़्रैगमेंट फ़्लैश होता था. (b/129405432)
- उस समस्या को ठीक किया गया है जिसमें popBackStack+replace+popBackStack ऑपरेशनों की सीरीज़ के बाद, प्राइमरी नेविगेशन फ़्रैगमेंट गायब हो जाता था. (b/124332597)
- फ़्रैगमेंट की स्थिति को पहले जैसा करते समय, आपकी गतिविधि पर
@ContentViewकंस्ट्रक्टर इस्तेमाल करने से जुड़ी समस्या को ठीक किया गया है. (b/127313094) - जब किसी मौजूदा टारगेट फ़्रैगमेंट को ऐसे फ़्रैगमेंट से बदला जाता है जो अब तक FragmentManager से अटैच नहीं हुआ है, तब
setTargetFragment()के लॉजिक को ठीक किया गया है. (aosp/932156)
वर्शन 1.1.0-alpha05
13 मार्च, 2019
androidx.fragment:fragment:1.1.0-alpha05, androidx.fragment:fragment-ktx:1.1.0-alpha05, और androidx.fragment:fragment-testing:1.1.0-alpha05 रिलीज़ किए जाते हैं. इस वर्शन में शामिल सभी बदलाव की पूरी सूची यहां देखी जा सकती है.
नई सुविधाएं
@ContentViewएनोटेशन लुकअप अब कैश मेमोरी में सेव किए जाते हैं (b/123709449)
व्यवहार में बदलाव
- अब
remove(),hide(),show(),detach(), औरsetPrimaryNavigationFragment()को किसी दूसरे FragmentManager से जुड़े फ़्रैगमेंट के साथ कॉल करने पर, चुपचाप फ़ेल होने के बजायIllegalStateExceptionदिखता है (aosp/904301)
गड़बड़ियां ठीक की गईं
FragmentActivityके लिएonNewIntentको अब@CallSuper(b/124120586) के तौर पर सही तरीके से मार्क किया गया है- उस समस्या को ठीक किया गया है जिसमें
getDialog().dismiss()याgetDialog().cancel()का इस्तेमाल करते समय,DialogFragmentकेonDismiss()को दो बार कॉल किया जा सकता था (b/126563750)
वर्शन 1.1.0-alpha04
7 फ़रवरी, 2019
androidx.fragment:fragment 1.1.0-alpha04, androidx.fragment:fragment-ktx 1.1.0-alpha04, और androidx.fragment:fragment-testing 1.1.0-alpha04 रिलीज़ किए जाते हैं.
नई सुविधाएं
@ContentViewक्लास के एनोटेशन के लिए सहायता जोड़ी गई है. इससे यह पता चलता है किonCreateView()को ओवरराइड करने के बजाय, किस लेआउट एक्सएमएल फ़ाइल को बड़ा किया जाना चाहिए. हमारा सुझाव है कि व्यू से जुड़ा कामonViewCreated()में करें. (aosp/837619)fragment-testingअबandroidx.test:core-ktx1.1.0 स्टेबल (b/121209673) पर निर्भर करता है- अब फ़्रैगमेंट होस्ट किए गए विकल्प मेन्यू (b/121126668) की जांच करने के लिए,
openActionBarOverflowOrOptionsMenuके साथFragmentScenarioका इस्तेमाल किया जा सकता है
एपीआई में हुए बदलाव
requireArguments()तरीका जोड़ा गया है. यह@NonNull Bundleदिखाता है याIllegalStateExceptionदिखाता है (b/121196360)- एक नोट जोड़ा गया है, जिसमें बताया गया है कि
getLifecycle(),getViewLifecycleOwner(), औरgetViewLifecycleOwnerLiveData()को बदला नहीं जाना चाहिए. साथ ही, यह भी बताया गया है कि आने वाले समय में रिलीज़ होने वाले वर्शन में इन्हें फ़ाइनल कर दिया जाएगा. अगर आपने फ़िलहाल इस तरीके को बदला है, तो कृपया सुविधा का अनुरोध सबमिट करें. (aosp/880714) - यह नोट जोड़ा गया है कि
getViewModelStore()को बदला नहीं जाना चाहिए. इसे आने वाले समय में रिलीज़ होने वाले वर्शन में फ़ाइनल कर दिया जाएगा. अगर आपने फ़िलहाल इस तरीके को बदला है, तो कृपया सुविधा का अनुरोध सबमिट करें. (aosp/880713) - Fragments की पिछली रिलीज़ के साथ बाइनरी कंपैटिबिलिटी से जुड़ी समस्या ठीक की गई. (aosp/887877) (aosp/889834)
गड़बड़ियां ठीक की गईं
nullकोsetTargetFragment()पर पास करने पर, टारगेट फ़्रैगमेंट सही तरीके से हटा दिए जाते हैं. (aosp/849969)- उस समस्या को ठीक किया गया है जिसमें टारगेट फ़्रैगमेंट, कभी-कभी
onDestroy()में या उसके बाद उपलब्ध नहीं होते थे. (b/122312935) - DialogFragment के onDismiss() को अब
onDestroy()से पहले कॉल किया जाता है. (aosp/874133) (aosp/890734)
वर्शन 1.1.0-alpha03
17 दिसंबर, 2018
नई सुविधाएं
- फ़्रैगमेंट अब
BundleSavedStateRegistryOwnerको लागू करता है और हाल ही में रिलीज़ हुई SavedState लाइब्रेरी [aosp/824380] पर निर्भर करता है by activityViewModelsKotlin प्रॉपर्टी डेलिगेट को, कंटेनिंग ऐक्टिविटी से जुड़े ViewModels को वापस पाने के लिए जोड़ा गया है [b/119050253]by viewModelsKotlin प्रॉपर्टी डेलिगेट को बड़ा कर दिया गया है, ताकिViewModelStoreOwnerपाने के लिए वैकल्पिक लैम्ब्डा तरीका अपनाया जा सके. इससे, पैरंट फ़्रैगमेंट या अन्य कस्टमViewModelStoreOwnerकोval viewModel: MyViewModel by viewModels(::requireParentFragment)जैसे कोड के साथ पास किया जा सकता है [b/119050253]
एपीआई में हुए बदलाव
FragmentScenarioकी मदद से, अबTheme.AppCompat[b/119054431] जैसी थीम तय की जा सकती है. यह एक ऐसा बदलाव है जिससे मौजूदा सिस्टम पर असर पड़ सकता है.requireView()मेथड जोड़ा गया है. यह@NonNull Viewदिखाता है याIllegalStateExceptionदिखाता है [b/120241368]requireParentFragment()मेथड जोड़ा गया है. यह@NonNull Fragmentदिखाता है याIllegalStateExceptionदिखाता है [b/112103783]
गड़बड़ियां ठीक की गईं
- IllegalStateException को ठीक किया गया: Failure saving state b/120814739
- सेव की गई इंस्टेंस की स्थिति से वापस लाए जा रहे फ़्रैगमेंट को अब हमेशा गैर-शून्य
Bundleमिलेगा [b/119794496] - हटाए गए फ़्रैगमेंट को फिर से जोड़ने पर, वे अब अपने
Lifecycleऑब्जेक्ट का फिर से इस्तेमाल नहीं करते [b/118880674]
वर्शन 1.1.0-alpha02
3 दिसंबर, 2018
नई सुविधाएं
- FragmentScenario के Kotlin एक्सटेंशन की मदद से, अब Fragment बनाने के लिए लैंबडा का इस्तेमाल किया जा सकता है. इसके लिए, आपको
FragmentFactoryइंस्टेंस पास करने की ज़रूरत नहीं होगी. (aosp/812913)
गड़बड़ियां ठीक की गईं
- बैक स्टैक पर नेस्ट किए गए फ़्रैगमेंट का इस्तेमाल करते समय, IllegalStateException को ठीक किया गया (b/119256498)
FragmentFactoryके साथFragmentScenario.recreate()का इस्तेमाल करने पर क्रैश होने की समस्या ठीक की गई (aosp/820540)- उस समस्या को ठीक किया गया है जिसमें फ़्रैगमेंट हटाए जाने के बाद, टारगेट फ़्रैगमेंट ऐक्सेस नहीं किए जा सकते थे (aosp/807634)
वर्शन 1.1.0-alpha01
5 नवंबर, 2018
यह fragment-testing आर्टफ़ैक्ट और FragmentScenario का पहला वर्शन है. इसे androidx.test:core API के आधार पर बनाया गया है. ज़्यादा जानकारी के लिए, फ़्रैगमेंट टेस्टिंग का दस्तावेज़ देखें.
नई सुविधाएं
- अलग-अलग फ़्रैगमेंट की जांच करने के लिए, नई FragmentScenario क्लास.
- अब किसी भी
FragmentManagerपरFragmentFactoryसेट किया जा सकता है. इससे यह कंट्रोल किया जा सकता है कि नए Fragment इंस्टेंस कैसे इंस्टैंशिएट किए जाएं. - किसी फ़्रैगमेंट से ViewModels को वापस पाने के लिए, एक नया
by viewModels()Kotlin प्रॉपर्टी डेलिगेट जोड़ा गया है. - इनपुट इवेंट (जैसे कि क्लिक) के पूरे न होने पर, अब उन्हें फ़्रैगमेंट के
onStop()में रद्द कर दिया जाता है.
एपीआई में हुए बदलाव
- Fragment API के सभी फ़ंक्शन में, शून्यता से जुड़े एनोटेशन को बेहतर बनाया गया है.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसकी वजह से, LiveData के अंदर से फ़्रैगमेंट ऑपरेशन पूरे नहीं हो पाते थे (b/77944637)
पहले से मालूम समस्याएं
- FragmentManager से किसी फ़्रैगमेंट को हटाने के बाद, टारगेट फ़्रैगमेंट को ऐक्सेस नहीं किया जा सकता.
fragment-testing, सहीandroidx.test:core:1.0.0के बजायandroidx.test:core:1.0.0-beta01पर निर्भर करता है.