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