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