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