फ़्रैगमेंट
नया अपडेट | स्टेबल रिलीज़ | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
---|---|---|---|---|
30 अक्टूबर, 2024 | 1.8.5 | - | - | - |
डिपेंडेंसी तय करना
फ़्रैगमेंट पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़ना होगा. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.
अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle
फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:
Groovy
dependencies { def fragment_version = "1.8.5" // Java language implementation implementation "androidx.fragment:fragment:$fragment_version" // Kotlin implementation "androidx.fragment:fragment-ktx:$fragment_version" // Compose implementation "androidx.fragment:fragment-compose:$fragment_version" // Testing Fragments in Isolation debugImplementation "androidx.fragment:fragment-testing-manifest:$fragment_version" androidTestImplementation "androidx.fragment:fragment-testing:$fragment_version" }
Kotlin
dependencies { val fragment_version = "1.8.5" // Java language implementation implementation("androidx.fragment:fragment:$fragment_version") // Kotlin implementation("androidx.fragment:fragment-ktx:$fragment_version") // Compose implementation("androidx.fragment:fragment-compose:$fragment_version") // Testing Fragments in Isolation debugImplementation("androidx.fragment:fragment-testing:$fragment_version") }
डिपेंडेंसी के बारे में ज़्यादा जानने के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.
सुझाव
आपके सुझाव, शिकायत या राय से हमें Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या इस लाइब्रेरी को बेहतर बनाने के लिए आपके पास कोई सुझाव है, तो हमें बताएं. नई लाइब्रेरी बनाने से पहले, कृपया इस लाइब्रेरी में मौजूद मौजूदा समस्याओं पर एक नज़र डालें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या पर अपना वोट जोड़ा जा सकता है.
ज़्यादा जानकारी के लिए, समस्या ट्रैकर का दस्तावेज़ देखें.
वर्शन 1.8
वर्शन 1.8.5
30 अक्टूबर, 2024
androidx.fragment:fragment-*:1.8.5
रिलीज़ हो गया है. वर्शन 1.8.5 में ये बातें शामिल हैं.
गड़बड़ियां ठीक की गईं
saveBackStack
से ट्रिगर होने वालेIllegalStateException
को ठीक किया गया, जो अनुमानित बैक जेस्चर रद्द होने या उसमें रुकावट आने के बाद ही ट्रिगर होता था. (I3387d, b/342419080)
वर्शन 1.8.4
2 अक्टूबर, 2024
androidx.fragment:fragment-*:1.8.4
रिलीज़ हो गया है. वर्शन 1.8.4 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- समस्या को ठीक किया गया है जहां सिस्टम पर तेज़ी से 'वापस जाएं' बटन दबाने या जेस्चर वापस करने से Androidx ट्रांज़िशन का इस्तेमाल करते समय फ़्रैगमेंट क्रैश हो जाते हैं. (Ibc038, b/364804225)
- फ़्रैगमेंट में एक समस्या को ठीक किया गया है. इस समस्या की वजह से, अनुमानित बैक जेस्चर में रुकावट आने पर, फ़्रैगमेंट मैनेजर एक अनिश्चित स्थिति में चला जाता था. साथ ही, गलत फ़्रैगमेंट भी दिखने लगता था. (If82e2, b/338624457)
- आपके
AndroidFragment
इंस्टेंस में जिस क्लास का इस्तेमाल हो रहा है उसे डाइनैमिक तरीके से बदलते समय,AndroidFragment
मेंUninitializedPropertyAccessException
की गड़बड़ी ठीक की गई. (I12dea)
वर्शन 1.8.3
4 सितंबर, 2024
androidx.fragment:fragment-*:1.8.3
रिलीज़ हो गया है. वर्शन 1.8.3 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
FragmentManager
अब अनुमानित बैक जेस्चर को मैनेज करते समय, लंबित कार्रवाइयों को सही तरीके से ध्यान में रखता है. इससे यह पक्का होगा कि सिस्टम को वापस करने पर,IndexOutOfBoundsException
नहीं दिखेगा. (I9ba32, b/342316801)- अगर
AndroidFragment
को कंपोज़िशन में तब जोड़ा जाता है, जब उसमें शामिल गतिविधि/फ़्रैगमेंट की स्थिति पहले से सेव हो, तो अब यह क्रैश नहीं होता. (I985e9, b/356643968)
वर्शन 1.8.2
24 जुलाई, 2024
androidx.fragment:fragment-*:1.8.2
रिलीज़ हो गया है. वर्शन 1.8.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
AndroidFragment
अब ऐसे मामलों को सही तरीके से हैंडल करता है जहां पैरंट फ़्रैगमेंट को फ़्रैगमेंट के बैक स्टैक पर रखा जाता है. साथ ही, उस फ़्रैगमेंट पर वापस पॉप-अप होने पर, 'आईडी के लिए कोई व्यू नहीं मिला' की समस्याओं से बचा जाता है. (I94608)FragmentTransaction.add
तरीके से जोड़े गए फ़्रैगमेंट, जोViewGroup
लेता है, अबonStart()
तक आगे बढ़ने से पहलेonContainerAvailable
का इंतज़ार करें. इससे उस एपीआई के उपयोगकर्ताओं पर असर पड़ता है, जैसे किAndroidFragment
. अबAndroidFragment
,onStart()
पर ले जाने से पहले,AndroidFragment
के कॉम्पोज़िशन को फिर से डालने का इंतज़ार करता है. (I94608)
वर्शन 1.8.1
26 जून, 2024
androidx.fragment:fragment-*:1.8.1
रिलीज़ हो गया है. वर्शन 1.8.1 में ये शर्तें शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें कंटेनर के बिना फ़्रैगमेंट, अनुमानित बैक जेस्चर शुरू करने पर तुरंत
DESTROYED
हो जाते थे. अब ये तब तकCREATED
स्थिति में रहते हैं, जब तक जेस्चर पूरा नहीं हो जाता. (If6b83, b/345244539)
वर्शन 1.8.0
12 जून, 2024
androidx.fragment:fragment-*:1.8.0
रिलीज़ हो गया है. वर्शन 1.8.0 में ये बदलाव शामिल हैं.
1.7.0 के बाद किए गए अहम बदलाव
fragment-compose
आर्टफ़ैक्ट में अब एकAndroidFragment
Composable
है. इसकी मदद से, फ़्रैगमेंट क्लास के नाम के ज़रिए, Compose की हैरारकी में फ़्रैगमेंट जोड़े जा सकते हैं. यह फ़्रैगमेंट की स्थिति को सेव और वापस लाने का काम अपने-आप मैनेज करता है. इसका इस्तेमाल, फ़्रैगमेंट को फ़ुल करने के लिएAndroidViewBinding
का इस्तेमाल करने के सुझाए गए पुराने तरीके के बजाय किया जाना चाहिए.FragmentManager
केOnBackStackChangedListener
इंटरफ़ेस परonBackStackChangeCancelled
कॉलबैक, अबFragmentManager
में कार्रवाइयों को एक्ज़ीक्यूट करने के हिस्से के तौर पर ट्रिगर होता है. ऐसा करते हुए, इसेonBackStackChangeCommitted
कॉलबैक के समय के करीब ले जाया जाता है.
वर्शन 1.8.0-rc01
29 मई, 2024
androidx.fragment:fragment-*:1.8.0-rc01
रिलीज़ हो गया है. वर्शन 1.8.0-rc01 में ये बातें शामिल हैं.
गड़बड़ियां ठीक की गईं
FragmentManagers OnBackStackChangedListener
इंटरफ़ेस परonBackStackChangeCancelled
कॉलबैक, अबFragmentManager
में ऑपरेशन को लागू करने के हिस्से के तौर पर ट्रिगर होता है. इससे यहonBackStackChangeCommitted
कॉलबैक के समय के करीब हो जाता है. (I5ebfb, b/332916112)
वर्शन 1.8.0-beta01
14 मई, 2024
androidx.fragment:fragment-*:1.8.0-beta01
रिलीज़ हो गया है. वर्शन 1.8.0-beta01 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट
1.7.1
से: अनुमानित बैक ट्रांज़िशन की सुविधा अब सिर्फ़ उन लेन-देन के लिए काम करेगी जिनमें सभी फ़्रैगमेंट में ऐनिमेशन या Androidx ट्रांज़िशन (जिसमें आगे-पीछे किया जा सकता है) हो. इससे, उस समस्या को ठीक किया गया है जिसमें कुछ हिस्से तक आगे-पीछे किया जा सकने वाले लेन-देन को रद्द करने पर, काली स्क्रीन दिखती थी. (I43037, b/339169168)
वर्शन 1.8.0-alpha02
17 अप्रैल, 2024
androidx.fragment:fragment-*:1.8.0-alpha02
रिलीज़ हो गया है. वर्शन 1.8.0-alpha02 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट
1.7.0-rc02
से: लॉग जोड़े गए हैं, ताकि यह पता चल सके कि किसी दूसरे ट्रांज़िशन के बिनाsharedElement
सेट करने पर, यह ट्रांज़िशन क्यों नहीं चलेगा. (Iec48e) - फ़्रैगमेंट
1.7.0-rc02
से: एक गड़बड़ी को ठीक किया गया है. इसमें, ट्रांज़ैक्शन में ऐसा शेयर किया गया एलिमेंट जोड़ा गया था जिसे आगे-पीछे नहीं किया जा सकता था. हालांकि, अन्य सभी ट्रांज़िशन को आगे-पीछे किया जा सकता था. इस वजह से, क्रैश हो जाता था. अब यह माना जाएगा कि लेन-देन नहीं किया जा सकता. (I18ccd)
वर्शन 1.8.0-alpha01
3 अप्रैल, 2024
androidx.fragment:fragment-*:1.8.0-alpha01
रिलीज़ हो गया है. वर्शन 1.8.0-alpha01 में ये कमिट शामिल हैं.
नई सुविधाएं
- नए
AndroidFragment
Composable
की मदद से, फ़्रैगमेंट क्लास के नाम के ज़रिए, Compose की हैरारकी में फ़्रैगमेंट जोड़े जा सकते हैं. यह फ़्रैगमेंट की स्थिति को सेव और वापस लाने की प्रोसेस को अपने-आप मैनेज करता है. इसका इस्तेमाल, 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 में ये कमिट शामिल हैं.
डिपेंडेंसी अपडेट करना
- फ़्रैगमेंट अब प्रोफ़ाइल इंस्टॉलर 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()
की सेटिंग में बदलाव करने के बाद, अब Super को कॉल करना होगा. (I14798, b/238928865)
गड़बड़ियां ठीक की गईं
- नए प्रोवाइडर कॉलबैक इंटरफ़ेस (
OnConfigurationChangedProvider
,OnMultiWindowModeChangedProvider
,OnTrimMemoryProvider
,OnPictureInPictureModeChangedProvider
) को इंटिग्रेट करने की वजह से हुई समस्याओं को ठीक किया गया. इससे यह पक्का किया जा सकेगा कि फ़्रैगमेंट को हमेशा सही कॉलबैक मिलें. (I9b380,I34581, (I8dfe6, b/242570955),If9d6b,Id0096,I690b3,I2cba2)
वर्शन 1.6.0-alpha02
24 अगस्त, 2022
androidx.fragment:fragment:1.6.0-alpha02
, androidx.fragment:fragment-ktx:1.6.0-alpha02
, और androidx.fragment:fragment-testing:1.6.0-alpha02
रिलीज़ हुए हैं. 1.6.0-alpha02 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट
1.5.2
से: एक ही समय परpopBackStack()
औरreplace()
लेन-देन को पूरा करने से, बाहर निकलने वाले फ़्रैगमेंट में गलतAnimation
/Animator
चलने की समस्या को ठीक किया गया. (Ib1c07, b/214835303)
वर्शन 1.6.0-alpha01
27 जुलाई, 2022
androidx.fragment:fragment:1.6.0-alpha01
, androidx.fragment:fragment-ktx:1.6.0-alpha01
, और androidx.fragment:fragment-testing:1.6.0-alpha01
रिलीज़ हो गए हैं. 1.6.0-alpha01 वर्शन में ये बदलाव शामिल हैं.
व्यवहार में बदलाव
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
अब गतिविधि1.5.0
के ज़रिए,ComponentDialog
का इस्तेमाल डिफ़ॉल्ट डायलॉग के तौर परonCreateDialog()
से करता है. - सेव किए गए इंस्टेंस स्टेटस को फिर से तैयार करना - फ़्रैगमेंट, अपने इंस्टेंस स्टेटस को सेव करने के तरीके में बदलाव कर रहे हैं. इससे यह साफ़ तौर पर पता चलता है कि फ़्रैगमेंट और स्टेट के सोर्स में कौनसा स्टेटस सेव किया गया है. मौजूदा बदलावों में ये शामिल हैं:
FragmentManager
, अब अपनी सेव की गई इंस्टेंस की स्थिति को सीधे कस्टमParcelable
में सेव करने के बजाय,Bundle
में सेव करता है.Fragment Result APIs
की मदद से सेट किए गए ऐसे नतीजे जो अब तक डिलीवर नहीं किए गए हैं उन्हें अबFragmentManager
की इंटरनल स्टेटस से अलग सेव किया जाता है.- हर फ़्रैगमेंट से जुड़ी स्थिति को अब
FragmentManager
की इंटरनल स्थिति से अलग सेव किया जाता है. इससे, किसी फ़्रैगमेंट से जुड़ी सेव की गई स्थिति कोFragment
डीबग लॉगिंग में मौजूद यूनीक आईडी से जोड़ा जा सकता है.
अन्य बदलाव
FragmentStrictMode
अब क्लास के नाम के साथallowViolation()
का इस्तेमाल करके, तीसरे पक्ष के निजी फ़्रैगमेंट को उल्लंघन के खास दंड से बचने की सुविधा देता है.- आपकी गतिविधि के
ActionBar
को मेन्यू देने के लिए, फ़्रैगमेंट एपीआई का इस्तेमाल नहीं किया जा सकता. गतिविधि1.4.0
में जोड़े गएMenuHost
औरMenuProvider
एपीआई, जांचे जा सकने वाले और लाइफ़साइकल के बारे में जानकारी देने वाले एपीआई के बराबर के एपीआई प्लैटफ़ॉर्म उपलब्ध कराते हैं. फ़्रैगमेंट को इसका इस्तेमाल करना चाहिए.
वर्शन 1.5.0-rc01
11 मई, 2022
androidx.fragment:fragment:1.5.0-rc01
, androidx.fragment:fragment-ktx:1.5.0-rc01
, और androidx.fragment:fragment-testing:1.5.0-rc01
रिलीज़ हुए हैं. वर्शन 1.5.0-rc01 में ये कमिट शामिल हैं.
सेव किए गए इंस्टेंस की स्थिति को फिर से तैयार करना
- हर फ़्रैगमेंट की स्थिति को अब
FragmentManager
की इंटरनल स्थिति से अलग सेव किया जाता है. इससे, किसी फ़्रैगमेंट से जुड़ी सेव की गई स्थिति को फ़्रैगमेंट डीबग लॉगिंग में मौजूद यूनीक आईडी से जोड़ा जा सकता है. (a153e0, b/207158202)
वर्शन 1.5.0-beta01
20 अप्रैल, 2022
androidx.fragment:fragment:1.5.0-beta01
, androidx.fragment:fragment-ktx:1.5.0-beta01
, और androidx.fragment:fragment-testing:1.5.0-beta01
रिलीज़ हो गए हैं. 1.5.0-beta01 वर्शन में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
DialogFragment
में एक नयाdismissNow
तरीका जोड़ा गया है. यहshowNow
फ़ंक्शन के साथ पैरिटी के लिएcommitNow
का इस्तेमाल करता है. ध्यान दें कि इससेDialog
तुरंत खारिज नहीं होगा. यह सिर्फ़FragmentManager
की स्थिति को सिंक करके अपडेट करेगा. (I15c36, b/72644830)
सेव किए गए इंस्टेंस की स्थिति को फिर से तैयार करना
FragmentManager
अब अपने सेव किए गए इंस्टेंस स्टेट को सीधे कस्टमParcelable
में सेव करने के बजाय,Bundle
में सेव करता है. यह, फ़्रैगमेंट से सेव किए जा रहे डेटा के बारे में ज़्यादा जानकारी देने का पहला कदम है. (I93807, b/207158202)- Fragment Result APIs की मदद से सेट किए गए ऐसे नतीजे जो अब तक डिलीवर नहीं हुए हैं उन्हें अब
FragmentManager
की इंटरनल स्टेटस से अलग सेव किया जाता है. इससे, सेव की गई इंस्टेंस की स्थिति के तौर पर सेव किए गए नतीजों के बारे में ज़्यादा पारदर्शिता मिलती है. (I6ea12, b/207158202)
वर्शन 1.5.0-alpha05
6 अप्रैल, 2022
androidx.fragment:fragment:1.5.0-alpha05
, androidx.fragment:fragment-ktx:1.5.0-alpha05
, और androidx.fragment:fragment-testing:1.5.0-alpha05
रिलीज़ हो गए हैं. 1.5.0-alpha05 वर्शन में ये बदलाव शामिल हैं.
एपीआई में बदलाव
Fragment
कीsetHasOptionsMenu()
का इस्तेमाल नहीं किया जा सकेगा. मेन्यू और उनके मेन्यू आइटम को मैनेज करने के लिए, फ़्रैगमेंट1.5.0-alpha04
के रिलीज़ नोट के मुताबिक, नए मेन्यू एपीआई का इस्तेमाल किया जाना चाहिए. (I7b4b4, b/226438239)
वर्शन 1.5.0-alpha04
23 मार्च, 2022
androidx.fragment:fragment:1.5.0-alpha04
, androidx.fragment:fragment-ktx:1.5.0-alpha04
, और androidx.fragment:fragment-testing:1.5.0-alpha04
रिलीज़ हो गए हैं. 1.5.0-alpha04 वर्शन में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- आपकी गतिविधि के
ActionBar
में मेन्यू उपलब्ध कराने के लिए, फ़्रैगमेंट एपीआई का इस्तेमाल नहीं किया जा सकता. इसकी वजह यह है कि ये आपके फ़्रैगमेंट को आपकी गतिविधि से कसकर जोड़ते हैं और इनकी अलग से जांच नहीं की जा सकती. गतिविधि1.4.0-alpha01
में जोड़े गएMenuHost
औरMenuProvider
एपीआई, जांचे जा सकने वाले और लाइफ़साइकल के बारे में जानकारी देने वाले एपीआई के बराबर के एपीआई प्लैटफ़ॉर्म उपलब्ध कराते हैं. फ़्रैगमेंट को इसका इस्तेमाल करना चाहिए. (I50a59, I20758)
गड़बड़ियां ठीक की गईं
SavedStateViewFactory
अबCreationExtras
का इस्तेमाल कर सकता है, भले ही उसेSavedStateRegistryOwner
से शुरू किया गया हो. अगर अतिरिक्त आर्ग्युमेंट दिए जाते हैं, तो शुरू किए गए आर्ग्युमेंट को अनदेखा कर दिया जाता है. (I6c43b, b/224844583)
वर्शन 1.5.0-alpha03
23 फ़रवरी, 2022
androidx.fragment:fragment:1.5.0-alpha03
, androidx.fragment:fragment-ktx:1.5.0-alpha03
, और androidx.fragment:fragment-testing:1.5.0-alpha03
रिलीज़ हो गए हैं. 1.5.0-alpha03 वर्शन में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- अब
by viewModels()
औरby activityViewModels()
फ़ंक्शन मेंCreationExtras
को पास किया जा सकता है. (Ibefe7, b/217601110)
व्यवहार में बदलाव
DialogFragment
अबonCreateDialog()
से मिले डिफ़ॉल्ट डायलॉग के तौर पर,ComponentDialog
का इस्तेमाल करता है. (If3784, b/217618170)
वर्शन 1.5.0-alpha02
9 फ़रवरी, 2022
androidx.fragment:fragment:1.5.0-alpha02
, androidx.fragment:fragment-ktx:1.5.0-alpha02
, और androidx.fragment:fragment-testing:1.5.0-alpha02
रिलीज़ हो गए हैं. 1.5.0-alpha02 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
FragmentStrictMode
अब तीसरे पक्ष के निजी फ़्रैगमेंट के लिए, क्लास के नाम के साथallowViolation()
का इस्तेमाल करके, उल्लंघन से जुड़ी खास पाबंदियों को बायपास करने की सुविधा देता है. (I8f678)
वर्शन 1.5.0-alpha01
26 जनवरी, 2022
androidx.fragment:fragment:1.5.0-alpha01
, androidx.fragment:fragment-ktx:1.5.0-alpha01
, और androidx.fragment:fragment-testing:1.5.0-alpha01
रिलीज़ हो गए हैं. वर्शन 1.5.0-alpha01 में ये कमियां हैं.
नई सुविधाएं
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
तरीके से इस्तेमाल कर सकें या संसाधनों की मदद से आज़माएं.फ़्रैगमेंट ट्रांज़िशन में, अपनी थीम से लिया गया स्टैंडर्ड ऐक्टिविटी-ट्रांज़िशन ऐनिमेशन चालू करना है या नहीं, यह तय करने के लिए
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}
जोड़ा गया है.FragmentManager.enableNewStateManager(boolean)
का एक्सपेरिमेंटल एपीआई हटा दिया गया है. अब सिर्फ़ नया स्टेट मैनेजर उपलब्ध है.
एक से ज़्यादा बैक स्टैक
FragmentManager
, addToBackStack()
का इस्तेमाल करने वाले फ़्रैगमेंट ट्रांज़ैक्शन से बना बैक स्टैक बनाए रखता है. इससे, फ़्रैगमेंट की मदद से स्टेटस सेव करने के तरीके का इस्तेमाल करके, उन लेन-देन को पॉप अप किया जा सकता है और पिछली स्थिति पर वापस लाया जा सकता है. इससे आपके फ़्रैगमेंट, अपनी स्थिति को सही तरीके से वापस ला सकते हैं.
इस रिलीज़ में, तीन नए FragmentManager
एपीआई उपलब्ध कराए गए हैं: saveBackStack(String name)
, restoreBackStack(String name)
, और clearBackStack(String name)
. इनकी मदद से, इन तरीकों को और बेहतर बनाया गया है. ये एपीआई, FragmentTransaction
की स्थिति और उन लेन-देन में जोड़े गए हर फ़्रैगमेंट की स्थिति को सेव करने के लिए, addToBackStack()
जैसे ही name
का इस्तेमाल करते हैं. साथ ही, बाद में उन लेन-देन और उनके फ़्रैगमेंट को उनकी स्थिति के साथ वापस लाने की सुविधा देते हैं. इसकी मदद से, मौजूदा बैक स्टैक को सेव करके और सेव की गई बैक स्टैक को वापस लाया जा सकता है. इससे, एक से ज़्यादा बैक स्टैक के बीच बेहतर तरीके से 'स्वैप' किया जा सकता है.
saveBackStack()
, popBackStack()
की तरह ही काम करता है. यह असाइनोक्रोनस (एक साथ नहीं होने वाला) होता है. इसकी वजह से, उस नाम के सभी फ़्रैगमेंट ट्रांज़ैक्शन को वापस ले जाया जाता है (‘पॉप’ किया जाता है) और जोड़े गए सभी फ़्रैगमेंट को नष्ट कर दिया जाता है और हटा दिया जाता है. हालांकि, यह कुछ अहम तरीकों से अलग है:
saveBackStack()
में हमेशा दशमलव के बाद की वैल्यू शामिल होती है.popBackStack()
के उलट, जो बैक स्टैक पर सभी लेन-देन की जानकारी दिखाता है. ऐसा तब होता है, जब पिछली स्टैक में बताया गया नाम न मिले या कोई नाम उपलब्ध न हो. ऐसे में,saveBackStack()
उस स्थिति मेंaddToBackStack()
का इस्तेमाल करके फ़्रैगमेंट ट्रांज़ैक्शन नहीं करेगा जो शून्य नहीं है.- उन लेन-देन से जोड़े गए सभी फ़्रैगमेंट की स्थिति सेव हो जाती है. इसका मतलब है कि हर फ़्रैगमेंट की व्यू स्थिति सेव की जाती है, हर फ़्रैगमेंट का
onSaveInstanceState()
कॉल किया जाता है और वह स्थिति वापस लाई जाती है. साथ ही, उन फ़्रैगमेंट से जुड़े किसी भीViewModel
इंस्टेंस को सेव रखा जाता है औरonCleared()
को उनके लिए कॉल नहीं किया जाता है.
saveBackStack()
के साथ इस्तेमाल किए जा सकने वाले फ़्रैगमेंट लेन-देन, कुछ शर्तों को पूरा करने चाहिए:
- हर फ़्रैगमेंट ट्रांज़ैक्शन में
setReorderingAllowed(true)
का इस्तेमाल करना ज़रूरी है, ताकि यह पक्का किया जा सके कि ट्रांज़ैक्शन को एक ही ऑपरेशन के तौर पर वापस लाया जा सकता है. - सेव किए गए ट्रांज़ैक्शन का सेट अपने-आप में होना चाहिए. इसका मतलब है कि उन्हें ट्रांज़ैक्शन के उस सेट के बाहर के किसी भी फ़्रैगमेंट का साफ़ तौर पर रेफ़रंस नहीं देना चाहिए. इससे यह पक्का किया जा सकता है कि उन्हें बाद में कभी भी वापस लाया जा सके. इस बात से कोई फ़र्क़ नहीं पड़ता कि पिछले समय के दौरान पिछली गतिविधियों में क्या बदलाव किया गया है.
- सेव किया गया कोई भी फ़्रैगमेंट, रिटेंन किया गया फ़्रैगमेंट नहीं हो सकता. इसके अलावा, उसके चाइल्ड फ़्रैगमेंट के ट्रांज़िशन सेट में भी रिटेंन किया गया कोई फ़्रैगमेंट नहीं होना चाहिए. इससे यह पक्का होता है कि बैक स्टैक सेव होने के बाद,
FragmentManager
सेव किए गए फ़्रैगमेंट का कोई रेफ़रंस न दिखाए.
saveBackStack()
, restoreBackStack()
, और clearBackStack()
की तरह ही, ये दोनों फ़ंक्शन भी पहले से सेव किए गए बैक स्टैक को वापस लाते हैं या उसे मिटा देते हैं. हालांकि, अगर आपने पहले सेव किए गए बैक स्टैक को उसी नाम से नहीं बुलाया है, तो ये दोनों फ़ंक्शन कुछ नहीं करते.saveBackStack()
ज़्यादा जानकारी के लिए, एक से ज़्यादा बैक स्टैक: ज़्यादा जानकारी लेख पढ़ें.
वर्शन 1.4.0-rc01
3 नवंबर, 2021
androidx.fragment:fragment:1.4.0-rc01
Fragment 1.4.0-beta01 से कोई बदलाव किए बिना रिलीज़ किया गया. वर्शन 1.4.0-rc01 में ये कमिट शामिल हैं.
वर्शन 1.4.0-beta01
27 अक्टूबर, 2021
androidx.fragment:fragment:1.4.0-beta01
, androidx.fragment:fragment-ktx:1.4.0-beta01
, और androidx.fragment:fragment-testing:1.4.0-beta01
रिलीज़ हुए हैं. 1.4.0-beta01 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- पैरंट फ़्रैगमेंट अब अपना कॉलबैक लॉन्च करने से पहले, अपनी पूरी हैरारकी में
onHiddenChanged()
को भेजेंगे. (Iedc20, b/77504618) - अब जब किसी फ़्रेगमेंट से दूसरे फ़्रेगमेंट पर जाने पर, कीबोर्ड खुला रहेगा, तो कीबोर्ड अपने-आप बंद हो जाएगा. (I8b842, b/196852211)
DialogFragment
अबshow()
,showNow()
याdismiss()
को कॉल करने पर,DialogFragment
के ज़रिए किए गए सभी लेन-देन के लिएsetReorderingAllowed(true)
का इस्तेमाल करता है. (Ie2c14)DetachAndAttachFragmentInSameFragmentTransaction
की बहुत लंबी लिंट चेतावनी को कम करकेDetachAndAttachSameFragment
कर दिया गया है. (e9eca3)
वर्शन 1.4.0-alpha10
29 सितंबर, 2021
androidx.fragment:fragment:1.4.0-alpha10
, androidx.fragment:fragment-ktx:1.4.0-alpha10
, और androidx.fragment:fragment-testing:1.4.0-alpha10
रिलीज़ हो गए हैं. वर्शन 1.4.0-alpha10 में ये कमियां हैं.
Lint
- एक ही
FragmentTransaction
में एक हीFragment
परdetach()
औरattach()
, दोनों को कॉल करने का पता लगाने के लिए,DetachAndAttachFragmentInSameFragmentTransaction
लिंट चेतावनी जोड़ी गई है - क्योंकि एक ही ट्रांज़ैक्शन में किए जाने पर, ये काम एक-दूसरे को रद्द कर देते हैं. इसलिए, किसी भी काम को करने के लिए, उन्हें अलग-अलग ट्रांज़ैक्शन में बांटना होगा. (aosp/1832956, b/200867930) MenuHost
केaddMenuProvider
एपीआई का इस्तेमाल करते समय, फ़्रैगमेंट व्यू लाइफ़साइकल में फ़्रैगमेंट लाइफ़साइकल के इस्तेमाल को ठीक करने के लिए,FragmentAddMenuProvider
लिंट गड़बड़ी जोड़ी गई. (aosp/1830457, b/200326272)
दस्तावेज़ से जुड़े अपडेट
- एपीआई बंद करने के मैसेज को ज़्यादा जानकारी के साथ बड़ा कर दिया गया है. फ़िलहाल, इसे
startActivityForResult
,startIntentSenderForResult
,onActivityResult
,requestPermissions
, औरonRequestPermissionsResult
नाम के एपीआई Activity नतीजे एपीआई मैनेज करते हैं. (cce80f) Fragment
औरDialogFragment
, दोनों के लिएonActivityCreated()
के बंद होने की सूचना को ज़्यादा जानकारी के साथ बड़ा कर दिया गया है. (224db4)
वर्शन 1.4.0-alpha09
15 सितंबर, 2021
androidx.fragment:fragment:1.4.0-alpha09
, androidx.fragment:fragment-ktx:1.4.0-alpha09
, और androidx.fragment:fragment-testing:1.4.0-alpha09
रिलीज़ हो गए हैं. वर्शन 1.4.0-alpha09 में ये कमियां हैं.
नई सुविधाएं
- अब
saveBackStack(name)
से सेव की गई किसी भी स्थिति को हटाने के लिए,clearBackStack(name)
को कॉल किया जा सकता है. (I70cd7)
एपीआई में हुए बदलाव
FragmentContainerView
क्लास को Kotlin में फिर से लिखा गया है, ताकि यह पक्का किया जा सके किgetFragment
फ़ंक्शन शून्यता को सही तरीके से मानेगा. (If694a, b/189629145)- FragmentStrictMode को अब Kotlin में लिखा गया है (I11767, b/199183506)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक कर दिया गया है जिसमें
setReorderingAllowed(true)
के साथ जोड़े गए फ़्रैगमेंट की स्थिति को ठीक से नहीं हटाया जा रहा था. यह समस्या तब आती थी, जब फ़्रैगमेंट को जोड़ने के बाद, उसे टास्क के पूरा होने से पहले हटा दिया जाता था. (I8ccb8)
वर्शन 1.4.0-alpha08
1 सितंबर, 2021
androidx.fragment:fragment:1.4.0-alpha08
, androidx.fragment:fragment-ktx:1.4.0-alpha08
, और androidx.fragment:fragment-testing:1.4.0-alpha08
रिलीज़ हुए हैं. 1.4.0-alpha08 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
UseRequireInsteadOfGet
Lint की जांच को बेहतर बनाया गया है, ताकि ग़ैर-ज़रूरी ब्रैकेट को बेहतर तरीके से हैंडल किया जा सके. (I2d865)- अतिरिक्त किनारे के केस को मैनेज करने के लिए,
UseGetLayoutInflater
लिंट चेक को बेहतर बनाया गया. (Ie5423)
वर्शन 1.4.0-alpha07
18 अगस्त, 2021
androidx.fragment:fragment:1.4.0-alpha07
, androidx.fragment:fragment-ktx:1.4.0-alpha07
, और androidx.fragment:fragment-testing:1.4.0-alpha07
रिलीज़ हुए हैं. इनमें कोई खास बदलाव नहीं हुआ है. 1.4.0-alpha07 वर्शन में ये बदलाव शामिल हैं.
वर्शन 1.4.0-alpha06
4 अगस्त, 2021
androidx.fragment:fragment:1.4.0-alpha06
, androidx.fragment:fragment-ktx:1.4.0-alpha06
, और androidx.fragment:fragment-testing:1.4.0-alpha06
रिलीज़ हो गए हैं. 1.4.0-alpha06 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- एक से ज़्यादा बैक स्टैक के बीच तेज़ी से स्विच करने पर, एक समस्या को ठीक किया गया है. यह समस्या तब आती थी, जब
FragmentTransaction
को वापस लाते समय,IllegalStateException
के तौर पर या किसी फ़्रैगमेंट की दूसरी कॉपी के तौर पर दिखता था. (I9039f) FragmentManager
के ज़रिए सेव की गई स्थिति कोsaveBackStack()
के ज़रिए वापस लाने के बाद भी,FragmentManager
के पास उस स्थिति की कॉपी सेव रह जाती थी. इस समस्या को ठीक कर दिया गया है. (Ied212)DialogFragment
काdismissAllowingStateLoss()
तरीका, स्टेटस सेव होने के बाद कॉल करने पर क्रैश नहीं होता है. ऐसा तब होता है, जबshow(FragmentTransaction, String)
तरीके से Dialogफ़्रैगमेंट को खास तौर पर जोड़ा जा रहा हो. (I84422)
वर्शन 1.4.0-alpha05
21 जुलाई, 2021
androidx.fragment:fragment:1.4.0-alpha05
, androidx.fragment:fragment-ktx:1.4.0-alpha05
, और androidx.fragment:fragment-testing:1.4.0-alpha05
रिलीज़ हो गए हैं. वर्शन 1.4.0-alpha05 में ये कमियां हैं.
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट
1.3.6
से: रूट व्यू मेंtransitionGroup=”true”
सेट होने पर,hide()
का इस्तेमाल करने पर, फ़्रैगमेंट का व्यू अब सही तरीके सेGONE
पर सेट हो गया है. (aosp/1766655, b/193603427) - फ़्रैगमेंट
1.3.6
से:FragmentActivity
अब लाइफ़साइकल कॉलबैक में, पहले ऑपरेशन के तौर पर सेव की गई स्थिति को हमेशा अनलॉक करता है. (I6db7a)
डिपेंडेंसी अपडेट करना
- फ़्रैगमेंट
1.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()
उस स्थिति मेंaddToBackStack()
का इस्तेमाल करके फ़्रैगमेंट ट्रांज़ैक्शन नहीं करेगा जो शून्य नहीं है.- उन लेन-देन से जोड़े गए सभी फ़्रैगमेंट की स्थिति सेव हो जाती है. इसका मतलब है कि हर फ़्रैगमेंट की व्यू स्थिति सेव की जाती है, हर फ़्रैगमेंट का
onSaveInstanceState()
कॉल किया जाता है और वह स्थिति वापस लाई जाती है. साथ ही, उन फ़्रैगमेंट से जुड़े किसी भीViewModel
इंस्टेंस को सेव रखा जाता है औरonCleared()
को उनके लिए कॉल नहीं किया जाता है.
saveBackStack()
के साथ इस्तेमाल किए जा सकने वाले फ़्रैगमेंट ट्रांज़ैक्शन को कुछ शर्तें पूरी करनी होंगी:
- हर फ़्रैगमेंट ट्रांज़ैक्शन में
setReorderingAllowed(true)
का इस्तेमाल होना चाहिए, ताकि यह पक्का किया जा सके कि लेन-देन को सिंगल, ऐटमिक ऑपरेशन के तौर पर पहले जैसा किया जा सकता है. - सेव किए गए ट्रांज़ैक्शन का सेट अपने-आप में होना चाहिए. इसका मतलब है कि उन्हें ट्रांज़ैक्शन के उस सेट के बाहर के किसी भी फ़्रैगमेंट का साफ़ तौर पर रेफ़रंस नहीं देना चाहिए. इससे यह पक्का किया जा सकता है कि उन्हें बाद में कभी भी वापस लाया जा सके. इस बात से कोई फ़र्क़ नहीं पड़ता कि पिछले समय के दौरान पिछली गतिविधियों में क्या बदलाव किया गया है.
- सेव किया गया कोई भी फ़्रैगमेंट, रिटेंन किया गया फ़्रैगमेंट नहीं हो सकता. इसके अलावा, उसके चाइल्ड फ़्रैगमेंट के ट्रांज़िशन सेट में भी रिटेंन किया गया कोई फ़्रैगमेंट नहीं होना चाहिए. इससे यह पक्का होता है कि बैक स्टैक सेव होने के बाद,
FragmentManager
सेव किए गए फ़्रैगमेंट का कोई रेफ़रंस न दिखाए.
saveBackStack()
की तरह ही, restoreBackStack()
भी कुछ नहीं करता. ऐसा तब होता है, जब आपने पहले उसी नाम से saveBackStack()
को कॉल न किया हो. (b/80029773)
फ़्रैगमेंट के लिए StrictMode
FragmentStrictMode
एपीआई में रनटाइम की जांच की सुविधा मिलती है. इससे यह पुष्टि की जा सकती है कि आपका ऐप्लिकेशन या लाइब्रेरी, काम नहीं करने वाले फ़्रैगमेंट एपीआई को कॉल नहीं कर रही हैं. उल्लंघन का पता चलने पर, आपके पास लॉग मैसेज प्रिंट करने, अपना कस्टम लिसनर ट्रिगर करने या ऐप्लिकेशन को क्रैश करने का विकल्प होता है. FragmentStrictMode.Policy
, यह कंट्रोल करता है कि कौनसी जांच चालू की गई हैं और कौनसी “पाबंदियां” ट्रिगर की गई हैं. इसे FragmentManager
पर सेट किया जा सकता है. इसके लिए, setStrictModePolicy()
का नया तरीका अपनाएं. यह नीति उस FragmentManager
पर लागू होती है. साथ ही, वह ऐसे चाइल्ड फ़्रैगमेंट मैनेजर पर भी लागू होती है जो अपनी यूनीक नीति सेट नहीं करते. (#123, #131, #150, b/143774122)
detectFragmentReuse()
यह पता लगाता है कि पहले हटाए गएFragment
इंस्टेंस कोFragmentManager
में फिर से जोड़ा जा रहा है या नहीं. किसीFragment
इंस्टेंस को मिटाने औरFragmentManager
से हटाने के बाद, आपको उससे कभी इंटरैक्ट नहीं करना चाहिए या उसका रेफ़रंस नहीं रखना चाहिए. (#142, b/153738653)detectFragmentTagUsage()
यह पता लगाता है कि आपके लेआउट एक्सएमएल में<fragment>
टैग का इस्तेमाल कब किया जा रहा है. अपने लेआउट के हिस्से के तौर पर फ़्रैगमेंट को बढ़ाते समय, आपको हमेशाFragmentContainerView
का इस्तेमाल करना चाहिए. (#141, b/153738235)detectWrongFragmentContainer()
तब पता लगाता है, जब किसी ऐसे कंटेनर में फ़्रैगमेंट जोड़ा जाता है जोFragmentContainerView
नहीं है. आपको अपने लेआउट में फ़्रैगमेंट के लिए, हमेशाFragmentContainerView
का इस्तेमाल करना चाहिए. (#146, b/181137036)detectRetainInstanceUsage()
,setRetainInstance()
याgetRetainInstance()
एपीआई का इस्तेमाल करने पर पता लगाता है कि वे अब काम नहीं करते. (#140, b/153737954)detectSetUserVisibleHint()
, बंद किए गएsetUserVisibleHint()
एपीआई का इस्तेमाल करने पर पता लगाता है. (#136, b/153738974)detectTargetFragmentUsage()
,setTargetFragment()
,getTargetFragment()
याgetTargetRequestCode()
एपीआई का इस्तेमाल करने पर पता लगाता है कि वे अब काम नहीं करते. (#139, b/153737745)
एपीआई में हुए बदलाव
FragmentManager.enableNewStateManager(boolean)
का एक्सपेरिमेंटल एपीआई हटा दिया गया है. अब सिर्फ़ नया स्टेट मैनेजर उपलब्ध है. (I90036, b/162776418)FragmentScenario
अबCloseable
को लागू करता है, ताकि आप इसे Kotlin केuse
तरीके से इस्तेमाल कर सकें या संसाधनों की मदद से आज़माएं. (#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 से: एपीआई 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
ऐनिमेशन नहीं चलेंगे, जैसे किNavHostFragment
में इस्तेमाल होने वाली ऑपरेशन कीFragmentTransaction
.setPrimaryNavFragment
(I38c87, b/183877426) FragmentContainerView
अब यह पक्का करता है कि हरFragment
कोWindowInsets
का एक नया सेट भेजा जाए. इससे यह पक्का होता है कि हर फ़्रैगमेंट अब इनसेट का इस्तेमाल स्वतंत्र रूप से कर सकता है. (I63f68, b/172153900)DialogFragment
अब उन मामलों को सही तरीके से हैंडल करता है जहां चाइल्ड फ़्रैगमेंट को ऐसे कंटेनर में जोड़ा जाता है जिसका आईडी आपकी कस्टमDialog
क्लास के कंटेनर के आईडी से मेल खाता है. इससेBottomSheetDialog
जैसे डायलॉग के अंदर इस्तेमाल होने वाले आईडी का दोबारा इस्तेमाल करने पर, व्यू हैरारकी (व्यू और व्यू ग्रुप के लेआउट का क्रम) से जुड़ी समस्याओं को ठीक किया जाता है. (Ie6279, b/180021387)FragmentManager.dump()
अब सक्रिय फ़्रैगमेंट की सूची के पहले फ़्रैगमेंट को सही तरीके से इंडेंट करता है. (If5c33, b/183705451)
नए स्टेट मैनेजर की गड़बड़ियां ठीक की गईं
- नया फ़्रैगमेंट स्टेट मैनेजर, अब 'छिपाएं' ऑपरेशन के साथ, बाहर निकलने के ट्रांज़िशन को सही तरीके से मैनेज करता है. (I9e4de, b/184830265)
वर्शन 1.3.2
24 मार्च, 2021
androidx.fragment:fragment:1.3.2
, androidx.fragment:fragment-ktx:1.3.2
, और androidx.fragment:fragment-testing:1.3.2
रिलीज़ हो गए हैं. वर्शन 1.3.2 में ये कमियां शामिल हैं.
नए स्टेट मैनेजर की गड़बड़ियां ठीक की गईं
popBackStack()
औरcommit()
, दोनों ऑपरेशन एक साथ चलाने पर, आखिरी ऑपरेशन अब कुछ पॉप ऐनिमेशन और कुछ एंटर ऐनिमेशन चलाने के बजाय, सभी ऐनिमेशन के लिए दिशा सेट करेगा. (I7072e, b/181142246)- शेयर किए गए एलिमेंट की हैरारकी में मौजूद व्यू के लिए, अब शेयर किए गए एलिमेंट के ट्रांज़िशन के दौरान, ट्रांज़िशन का नाम नहीं हटाया जाएगा. (I4d4a6, b/179934757)
डिपेंडेंसी से जुड़े अपडेट
- फ़्रैगमेंट अब गतिविधि 1.2.2 पर निर्भर करता है. इसमें फ़्रैगमेंट 1.3.1 या इसके बाद के वर्शन का इस्तेमाल करते समय, गतिविधि की
InvalidFragmentVersionForActivityResult
लिंट जांच से जुड़ी समस्या को ठीक किया जाता है. - फ़्रैगमेंट अब Lifecycle 2.3.1 पर निर्भर करता है.
वर्शन 1.3.1
10 मार्च, 2021
androidx.fragment:fragment:1.3.1
, androidx.fragment:fragment-ktx:1.3.1
, और androidx.fragment:fragment-testing:1.3.1
रिलीज़ हो गए हैं. 1.3.1 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
DialogFragment
में मौजूद डायलॉग, अब अपने DecorView के ज़रिए ViewTree के मालिकों का ऐक्सेस पा सकते हैं. इससे यह पक्का होता है किDialogFragment
का इस्तेमालComposeView
के साथ किया जा सकता है. (Ib9290, b/180691023)
गड़बड़ियां ठीक की गईं
- FragmentContainerView का इस्तेमाल करके, पहले से मौजूद
RESUMED
गतिविधि में फ़्लोर किए गए फ़्रैगमेंट, कॉन्फ़िगरेशन में बदलाव होने के बाद अब सही तरीके से दिखाए जाते हैं. (Ie14c8, b/180538371) - फ़्रैगमेंट के आखिर में अब एक अतिरिक्त
}
नहीं हैtoString()
(I54705, b/177761088) - FragmentActivity में बदले गए मेथड अब सही तरीके से, आधार मेथड javaDoc (I736ce, b/139548782) को इनहेरिट करते हैं
setFragmentResult
औरsetFragmentResultListener
के दस्तावेज़ों ने अपने पैरामीटर दस्तावेज़ अपडेट किए हैं, ताकि यह दिखाया जा सके कि वे अब शून्य (I990ba, b/178348386) स्वीकार नहीं करते हैं
नए स्टेट मैनेजर की गड़बड़ियां ठीक की गईं
mFocusedView
(Ib4e9e, b/179925887) की वजह से, फ़्रैगमेंट में मेमोरी लीक होने की समस्या को ठीक किया गया- लेन-देन दिखाने/छिपाने (I8bce8, b/180255554) के लिए इस्तेमाल करने पर, फ़्रैगमेंट अब
onCreateOptionsMenu
को सही तरीके से कॉल करते हैं - फ़्रैगमेंट के लेआउट होने से पहले शुरू होने वाले ट्रांज़िशन वाले चाइल्ड फ़्रैगमेंट, अब सही तरीके से
RESUMED
(Ic11e6, b/180825150) तक पहुंच जाएंगे <fragment>
टैग का इस्तेमाल करके फ़्लोरेट किए गए फ़्रैगमेंट अब हमेशाRESUMED
(I452ac, (I9fa49) पर ले जाएंगे
डिपेंडेंसी से जुड़े अपडेट
- फ़्रैगमेंट 1.3.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
हो. इन नए एपीआई के पक्ष में, टारगेट फ़्रैगमेंट एपीआई को बंद कर दिया गया है. फ़्रैगमेंट रिज़ल्ट एपीआई का इस्तेमाल करके, नतीजे पाना लेख पढ़ें.FragmentOnAttachListener
:FragmentActivity
औरFragment
परonAttachFragment()
कॉलबैक की सुविधा बंद कर दी गई है. ज़्यादा सुविधाजनक विकल्प देने के लिए, एक नयाFragmentOnAttachListener
जोड़ा गया है. इससे,onAttachFragment()
को अलग-अलग और जांचे जा सकने वाले लिसनर को सौंपा जा सकता है. साथ ही, अपने सीधे चाइल्ड FragmentManager के अलावा, FragmentManagers में लिसनर जोड़ने की सुविधा भी मिलती है.FragmentScenario
में हुए सुधार:fragment-testing
आर्टफ़ैक्ट कीFragmentScenario
क्लास को Kotlin में फिर से लिखा गया है. साथ ही, इसमें कई सुधार किए गए हैं:FragmentScenario
अबmoveToState()
को लागू करने के लिए,setMaxLifecycle()
का इस्तेमाल करता है. इससे सभी एपीआई लेवल पर एक जैसा व्यवहार होता है और फ़्रैगमेंट की स्थिति को उससे जुड़ी ऐक्टिविटी से अलग किया जाता है.FragmentScenario
में अब शुरुआतीLifecycle.State
सेट करने की सुविधा है. इससे, पहली बार किसीLifecycle.State
पर जाने से पहले, फ़्रैगमेंट की स्थिति की पुष्टि की जा सकती है.- अब
onFragment
केFragmentScenario
एपीआई का विकल्प मौजूद है. यह Kotlin के रीफ़ाइड एक्सटेंशन तरीकेwithFragment
के तौर पर उपलब्ध है. इसकी मदद से, वैल्यू वापस की जा सकती है. खास तौर पर, यह दिए गए ब्लॉक में मिले अपवादों को फिर से दिखाता है.
ViewTree
सहायता:Fragment
अब लाइफ़साइकल2.3.0
और सेव की गई स्थिति1.1.0
में जोड़े गएViewTreeLifecycleOwner.get(View)
,ViewTreeViewModelStoreOwner.get(View)
, औरViewTreeSavedStateRegistryOwner
एपीआई के साथ काम करता है. इससे,Fragment
मेंView
का इस्तेमाल करने पर, फ़्रेगमेंट कोViewModelStoreOwner
के तौर पर दिखाया जाएगा. साथ ही, फ़्रेगमेंट के व्यू लाइफ़साइकल से जुड़ेSavedStateRegistryOwner
औरLifecycleOwner
को दिखाया जाएगा.TRANSIT_
ऐनिमेशन में हुए बदलाव: फ़्रैगमेंट के डिफ़ॉल्ट इफ़ेक्ट,TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
, औरTRANSIT_FRAGMENT_FADE
में अबAnimation
के बजायAnimator
का इस्तेमाल किया जाता है. इन ऐनिमेटर को बनाने के लिए इस्तेमाल किए गए संसाधन अब निजी हैं.setRetainInstance()
का इस्तेमाल बंद किया गया: फ़्रैगमेंट परsetRetainInstance()
तरीके को इस्तेमाल करने की सुविधा बंद कर दी गई है. ViewModels के आने के बाद, डेवलपर के पास स्टेटस को बनाए रखने के लिए एक खास एपीआई है. इसे ऐक्टिविटी, फ़्रैगमेंट, और नेविगेशन ग्राफ़ से जोड़ा जा सकता है. इससे डेवलपर, सामान्य और सेव नहीं किए गए फ़्रैगमेंट का इस्तेमाल कर सकते हैं. साथ ही, जिस खास स्टेट को सेव रखना है उसे अलग से रख सकते हैं. इससे, सेव की गई स्टेट को एक बार बनाने और उसे खत्म करने की काम की प्रॉपर्टी (जैसे,ViewModel
का कन्स्ट्रक्टर और उसे मिलने वालाonCleared()
कॉलबैक) को बनाए रखा जा सकता है. साथ ही, लीक के सामान्य सोर्स से बचा जा सकता है.ViewPager 1 अडैप्टर का बंद होना: ViewPager2
1.0.0
के रिलीज़ होने के बाद,ViewPager
के साथ इंटरैक्ट करने के लिएFragmentPagerAdapter
औरFragmentStatePagerAdapter
क्लास बंद कर दी गई हैं. ViewPager से ViewPager2 पर माइग्रेट करना लेख पढ़ें.
वर्शन 1.3.0-rc02
27 जनवरी, 2021
androidx.fragment:fragment:1.3.0-rc02
, androidx.fragment:fragment-ktx:1.3.0-rc02
, और androidx.fragment:fragment-testing:1.3.0-rc02
रिलीज़ हो गए हैं. 1.3.0-rc02 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- कॉन्फ़िगरेशन में बदलाव करने के बाद, पैरंट
DialogFragment
, चाइल्डDialogFragment
के ऊपर दिखने की समस्या को ठीक किया गया है. अब चाइल्ड डायलॉग फ़्रैगमेंट, पैरंट डायलॉग फ़्रैगमेंट के ऊपर हमेशा दिखेंगे. (I30806, b/177439520) hide
के साथAnimation
का इस्तेमाल करने पर, ऐनिमेशन के आखिर में छिपे हुए फ़्रैगमेंट के फ़्लैश होने की समस्या को ठीक किया गया है. (I57e22, b/175417675)- व्यू के लेआउट में ट्रांज़िशन जोड़ने के बाद,
RESUMED
पर सही तरीके से पहुंचा जा सकता है. (I1fc1d, b/177154873)
नए स्टेट मैनेजर की गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट का व्यू
Lifecycle
, अब उन मामलों को सही तरीके से मैनेज करता है जहांLifecycle
CREATED
तक पहुंचने से पहले ही फ़्रैगमेंट का व्यू खत्म हो जाता है. इससे, “INITIALIZED से कोई इवेंट नहीं हुआ” वाले अपवादों से बचा जा सकता है. (eda2bd, b/176138645) Animator
का इस्तेमाल करने वाले फ़्रैगमेंट, अबFragmentContainerView
का इस्तेमाल करने पर सही क्रम में दिखते हैं. (Id9aa3, b/176089197)
वर्शन 1.3.0-rc01
16 दिसंबर, 2020
androidx.fragment:fragment:1.3.0-rc01
, androidx.fragment:fragment-ktx:1.3.0-rc01
, और androidx.fragment:fragment-testing:1.3.0-rc01
रिलीज़ हो गए हैं. 1.3.0-rc01 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
onPrepareOptionsMenu()
अबonCreateOptionsMenu()
के जैसे ही काम करता है. साथ ही, जब कोई पैरंट फ़्रैगमेंटsetMenuVisibility(false)
को कॉल करता है, तब इसे कॉल नहीं किया जाता. (Id7de8, b/173203654)
नए स्टेट मैनेजर की गड़बड़ियां ठीक की गईं
Animation
वाले फ़्रैगमेंट कोFragmentContainerView
में जोड़ने के बाद, पॉप ऑपरेशन से उस जोड़ने की प्रोसेस को रोकने पर, लीक और विज़ुअल आर्टफ़ैक्ट की समस्या को ठीक किया गया. (I952d8)- एक समस्या को ठीक किया गया है. इसमें, फ़्रैगमेंट का व्यू,
onCreate()
याonViewCreated()
तरीकों के दौरान बदले जाने पर भी, व्यू की हैरारकी में बना रहता था. (I8a7d5) - फ़्रैगमेंट रूट व्यू फिर से शुरू होने पर, फ़ोकस अब सही तरीके से वापस आ जाता है. (Ifc84b)
- एक ही फ़्रैगमेंट ट्रांज़ैक्शन में पॉप और बदलाव करने की कार्रवाइयों को जोड़ने पर, अब सही ऐनिमेशन दिखेंगे (Ifd4e4, b/170328691)
वर्शन 1.3.0-beta02
2 दिसंबर, 2020
androidx.fragment:fragment:1.3.0-beta02
, androidx.fragment:fragment-ktx:1.3.0-beta02
, और androidx.fragment:fragment-testing:1.3.0-beta02
रिलीज़ हो गए हैं. 1.3.0-beta02 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
FragmentScenario
को पूरी तरह से Kotlin में बदल दिया गया है. साथ ही,FragmentAction
के लिए Kotlin 1.4 के फ़ंक्शनल इंटरफ़ेस का इस्तेमाल करके, सोर्स और बाइनरी कम्पैटिबिलिटी को बनाए रखा गया है. (I19d31)
व्यवहार में बदलाव
class
याandroid:name
एट्रिब्यूट का इस्तेमाल करके फ़्रैगमेंट को इन्फ़्लेट नहीं करने वाले FragmentContainerView का इस्तेमाल, अबFragmentActivity
के बाहर किया जा सकता है. (आईडी4397, b/172266337)- किसी फ़्रैगमेंट के लाइफ़साइकल को
DESTROYED
पर सेट करने की कोशिश करने पर, अबIllegalArgumentException
दिखेगा (Ie7651, b/170765622) DESTROYED
स्टेटस वाले FragmentScenario को शुरू करने पर, अबIllegalArgumentException
दिखेगा (I73590, b/170765622)
नए स्टेट मैनेजर की गड़बड़ियां ठीक की गईं
Animator
याTRANSIT_FRAGMENT_
विकल्पों में से किसी एक का इस्तेमाल करके, फ़्रैगमेंट ट्रांज़िशन में रुकावट आने पर, व्यू अपनी फ़ाइनल स्थिति तक नहीं पहुंच पाता था. इस समस्या को ठीक कर दिया गया है. (I92426, b/169874632)- एक समस्या को ठीक किया गया है, जिसकी वजह से
Animation
वाले फ़्रैगमेंट को सही तरीके से मिटाया नहीं जा सका. (I83d65) - जिन फ़्रैगमेंट के इफ़ेक्ट को उलट दिया गया है वे अब सही तरीके से रद्द हो जाएंगे और सही तरीके से फिर से शुरू हो जाएंगे. (I62226, b/167092035)
hide()
के 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 (Id6471, b/165307851, b/165300826) का इस्तेमाल करने के लिए, androidx को अपग्रेड करें
व्यवहार में बदलाव
- फ़्रैगमेंट रिसॉर्स फ़ाइलों को सही तरीके से निजी किया गया है. (aosp/1425237)
गड़बड़ियां ठीक की गईं
<fragment>
टैग का इस्तेमाल करके फ़्लोर किए गए फ़्रैगमेंट, अब STARTED (I02f4c) पर जाने से पहले, तब तक इंतज़ार करेंगे, जब तक उनके व्यू किसी कंटेनर में जोड़ दिए जाते हैं- दिखने वाले और फिर
setMaxLifecycle()
सेCREATED
तक के फ़्रैगमेंट, अब अपने बाहर निकलने के इफ़ेक्ट सही तरीके से चलाते हैं. (b/165822335) - अब, बैक स्टैक में नहीं जोड़े गए अलग किए गए फ़्रैगमेंट को हटाने से, मेमोरी लीक नहीं होती. निक्लास ऐन्समान गेर्टज़ की ओर से! (b/166489383)
- चालू फ़्रैगमेंट में अब हमेशा कोई नॉल वैल्यू वाला
FragmentManager
होगा. साथ ही, नॉल वैल्यू वालाFragmentManager
होने पर फ़्रैगमेंट को हमेशा चालू माना जाएगा. (aosp/1422346) - फ़्रैगमेंट के डिफ़ॉल्ट इफ़ेक्ट,
TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
, औरTRANSIT_FRAGMENT_FADE
अबAnimation
के बजायAnimator
का इस्तेमाल करते हैं. (b/166155034)
नए स्टेट मैनेजर की गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट अब ऐनिमेशन शुरू करने से ठीक पहले, व्यू फ़ोकस की स्थिति को सही तरीके से वापस लाते हैं. (Icc256)
- जिन फ़्रैगमेंट में सिर्फ़ शेयर किया गया एलिमेंट ट्रांज़िशन होता है वे अब अपने स्पेशल इफ़ेक्ट को सही तरीके से पूरा कर लेते हैं. इसका मतलब है कि वे असल में अपनी फ़ाइनल स्थिति पर चले जाते हैं (Iaebc7, b/166658128)
- फ़्रैगमेंट व्यू को हमेशा, खाते से हटाने से पहले कंटेनर से हटा दिया जाता है. (Id5876)
- नया स्टेटस मैनेजर, अब नया फ़्रैगमेंट व्यू जोड़ने से पहले, मौजूदा फ़्रैगमेंट व्यू को लगातार हटाता है. (I41a6e)
- फ़्रैगमेंट व्यू के दिखने की सेटिंग में होने वाले साफ़ तौर पर होने वाले बदलाव, अब नया स्टेट मैनेजर स्वीकार करता है. इसका मतलब है कि अगर ऐनिमेशन शुरू होने से पहले, किसी फ़्रैगमेंट के व्यू को
INVISIBLE
पर सेट किया जाता है, तो वह फ़्रैगमेंट दिखेगा ही नहीं. (b/164481490) - फ़्रैगमेंट अब
Animators
कोAnimations
के मुकाबले प्राथमिकता देते हैं. इसका मतलब है कि दोनों के साथ मौजूद फ़्रैगमेंट, सिर्फ़Animator
को चलाएगा औरAnimation
को अनदेखा कर देगा. (b/167579557) - नए स्टेटस मैनेजर की वजह से, अब ऐनिमेशन का इस्तेमाल करते समय फ़्रैगमेंट फ़्लैश नहीं होते. (b/163084315)
आम समस्या
नए स्टेटस मैनेजर का इस्तेमाल करते समय, अगर किसी खास इफ़ेक्ट को लागू करने के दौरान, पिछले फ़्रैगमेंट पर वापस जाने के बजाय, 'वापस जाएं' बटन दबाया जाता है, तो पुराना फ़्रैगमेंट फिर से नहीं जोड़ा जाता. इस वजह से, स्क्रीन खाली रह जाती है. (b/167259187, b/167092035, b/168442830)
वर्शन 1.3.0-alpha08
19 अगस्त, 2020
androidx.fragment:fragment:1.3.0-alpha08
, androidx.fragment:fragment-ktx:1.3.0-alpha08
, और androidx.fragment:fragment-testing:1.3.0-alpha08
रिलीज़ हो गए हैं. 1.3.0-alpha08 वर्शन में ये बदलाव शामिल हैं.
नया स्टेट मैनेजर
इस रिलीज़ में, FragmentManager
के इंटरनल स्टेट मैनेजमेंट को पूरी तरह से बदला गया है. इससे लाइफ़साइकल के तरीकों, ऐनिमेशन, और ट्रांज़िशन के डिस्पैच पर असर पड़ता है. साथ ही, यह भी तय होता है कि टास्क किए गए लेन-देन को कैसे मैनेज किया जाए. यह सुविधा डिफ़ॉल्ट रूप से चालू रहती है. ज़्यादा जानकारी के लिए, फ़्रैगमेंट: इंटरनल ब्लॉग पोस्ट को फिर से बनाना देखें. (b/139536619, b/147749580)
FragmentManager.enableNewStateManager(boolean)
में मौजूद प्रयोग के तौर पर उपलब्ध एपीआई का इस्तेमाल करके, यह कंट्रोल किया जा सकता है कि FragmentManager, नए स्टेटस मैनेजर का इस्तेमाल करता है या नहीं. (I7b6ee)
ये समस्याएं सिर्फ़ नए स्टेटस मैनेजर का इस्तेमाल करने पर ठीक होती हैं:
- नया फ़्रैगमेंट शुरू होने से पहले,
replace
कार्रवाई का पिछला फ़्रैगमेंट अब सही तरीके से बंद हो गया है. (b/161654580) - फ़्रैगमेंट अब एक ही फ़्रैगमेंट पर एक से ज़्यादा प्रतिस्पर्धी ऐनिमेशन को रोक देते हैं. ऐसे मामलों में ऐसा नहीं किया जा सकता जहां
Animation
, सभीTransition
इफ़ेक्ट को बदल देगा या किसी अलग फ़्रैगमेंट परAnimator
औरTransition
, दोनों चलेंगे. (b/149569323) - अब सिर्फ़ आखिरी में आने वाले फ़्रैगमेंट और पहले में बाहर निकलने वाले फ़्रैगमेंट के बजाय, सभी फ़्रैगमेंट के
enterTransition
औरexitTranstion
को चलाया जाता है. (b/149344150) - रोके गए फ़्रैगमेंट अब
CREATED
स्थिति में नहीं अटकते हैं. इसके बजाय, वे दूसरे फ़्रैगमेंट के साथSTARTED
पर चले जाते हैं. (b/129035555) - उस समस्या को ठीक किया गया है जिसकी वजह से
FragmentManager
, रीऑर्डर किए गए लेन-देन और बिना क्रम वाले लेन-देन को मिलाकर, सही तरीके से कार्रवाइयां नहीं करता था. (b/147297731) - एक साथ कई फ़्रैगमेंट पॉप अप करने पर, फ़्रैगमेंट को कुछ समय के लिए रोकने पर, इंटरमीडिएट फ़्रैगमेंट नहीं दिखेंगे. (b/37140383)
onAttachFragment()
कॉलबैक मेंfindFragmentById()
याfindFragmentByTag()
को कॉल करने पर,FragmentManager
अब सही फ़्रैगमेंट दिखाता है. (b/153082833)- जब फ़्रैगमेंट को बदलने वाले फ़्रैगमेंट को पोस्टपोन किया जाता है, तो फ़्रैगमेंट अब खत्म किए जा रहे फ़्रैगमेंट पर
onCreateView()
को कॉल नहीं करते. (b/143915710) - फ़्रेमवर्क
Transition
और AndroidXTransition
इंस्टेंस को जोड़ने की कोशिश करते समय, गड़बड़ी का मैसेज अब अमान्य ट्रांज़िशन वाले फ़्रैगमेंट के बारे में बताता है. (b/155574969)
व्यवहार में बदलाव
- अब किसी फ़्रैगमेंट के
onCreate()
लाइफ़साइकल तरीके में,launch()
कोActivityResultLauncher
पर कॉल किया जा सकता है. (b/161464278) onCreate()
के बादregisterForActivityResult()
को कॉल करने पर, एक अपवाद दिखता है. इससे पता चलता है कि कॉन्फ़िगरेशन में बदलाव होने के बाद, बिना किसी सूचना के नतीजे डिलीवर नहीं किए जा सकते. (b/162255449)FragmentActivity
अबFragmentManager
की स्थिति को वापस लाने के लिए, गतिविधि1.2.0-alpha08
में पेश किए गएOnContextAvailableListener
एपीआई का इस्तेमाल करता है.FragmentActivity
के सबक्लास में जोड़े गए सभी लिसनर, इस लिसनर के बाद चलेंगे. (I513da)
गड़बड़ियां ठीक की गईं
startIntentSenderForResult()
का इस्तेमाल करते समय पार हुआActivityOptions
अब मान्य है. (b/162247961)
आम समस्या
- नए स्टेट मैनेजर का इस्तेमाल करने पर, सीधे फ़्रैगमेंट के रूट व्यू को
onViewCreated()
के बाद औरonResume()
से पहले सेट करने पर, आपकी सेट की गई विज़िबिलिटी कोFragmentManager
से बदल दिया जाता है. इससे रूट व्यू कंट्रोल किया जाता है. वैकल्पिक हल के रूप में, आपको अपने फ़्रैगमेंट की दृश्यता बदलने के लिए हमेशाhide()
औरshow()
कार्रवाइयों का इस्तेमाल करना चाहिए. (b/164481490)
वर्शन 1.3.0-alpha07
22 जुलाई, 2020
androidx.fragment:fragment:1.3.0-alpha07
, androidx.fragment:fragment-ktx:1.3.0-alpha07
, और androidx.fragment:fragment-testing:1.3.0-alpha07
रिलीज़ हो गए हैं. 1.3.0-alpha07 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
FragmentScenario
अब फ़्रैगमेंट को हमेशाRESUMED
वाली स्थिति में ले जाने के बजाय, लाइफ़साइकल की शुरुआती स्थिति कोCREATED
,STARTED
याRESUMED
पर सेट करने की सुविधा देता है. (b/159662750)- Kotlin के रीफ़ाइड एक्सटेंशन तरीके
withFragment
के तौर पर,onFragment
केFragmentScenario
एपीआई का विकल्प जोड़ा गया है. इसकी मदद से, वैल्यू वापस की जा सकती है. खास तौर पर, यह दिए गए ब्लॉक में मिले अपवादों को फिर से दिखाता है. (b/158697631)
व्यवहार में बदलाव
FragmentScenario
, अबmoveToState()
को लागू करने के लिएsetMaxLifecycle()
का इस्तेमाल करता है, ताकि सभी एपीआई लेवल पर एक जैसा काम किया जा सके. साथ ही, बुनियादी ऐक्टिविटी से फ़्रैगमेंट की स्थिति को अलग किया जा सके. (b/156527405)ViewTreeSavedStateRegistryOwner
से मिलाSavedStateRegistryOwner
, अब फ़्रैगमेंट व्यू के लाइफ़साइकल से जुड़ा है. इससे यह पक्का होता है कि फ़्रेगमेंट के व्यू के साथ-साथ, इसकी स्थिति भी सेव और वापस लाई जाए. (b/158503763)
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट अब
ViewCompat.requestApplyInsets()
को कॉल करने से पहले, फ़्रैगमेंट के व्यू के अटैच होने का इंतज़ार करते हैं. इससे, इनसेट अनुरोध को ड्रॉप किए जाने से जुड़ी समस्याओं से बचा जा सकता है. (b/158095749) - अब
clearFragmentResultListener
को कॉल करने से, लाइफ़साइकल ऑब्ज़र्वर सही तरह से साफ़ हो जाता है. (b/159274993)
वर्शन 1.3.0-alpha06
10 जून, 2020
androidx.fragment:fragment:1.3.0-alpha06
, androidx.fragment:fragment-ktx:1.3.0-alpha06
, और androidx.fragment:fragment-testing:1.3.0-alpha06
रिलीज़ हो गए हैं. 1.3.0-alpha06 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
FragmentActivity
औरFragment
परonAttachFragment()
कॉलबैक की सुविधा बंद कर दी गई है. ज़्यादा सुविधाजनक विकल्प देने के लिए, एक नयाFragmentOnAttachListener
जोड़ा गया है. इससे,onAttachFragment()
को अलग-अलग और जांचे जा सकने वाले लिसनर को सौंपने की अनुमति मिलती है. साथ ही, अपने सीधे चाइल्ड फ़्रैगमेंट मैनेजर के अलावा, फ़्रैगमेंट मैनेजर में लिसनर जोड़ने की सुविधा मिलती है. (I06d3d)
गड़बड़ियां ठीक की गईं
- पैरंट फ़्रैगमेंट की व्यू स्टेटस को अब चाइल्ड फ़्रैगमेंट से पहले वापस लाया जाता है. इससे, कॉन्फ़िगरेशन में बदलाव होने के बाद, विज़ुअल ऑर्डर करने से जुड़ी समस्या ठीक हो जाती है. यह समस्या तब आती है, जब
DialogFragment
किसी दूसरेDialogFragment
को चाइल्ड फ़्रैगमेंट के तौर पर दिखाता है. (b/157195715) - उस समस्या को ठीक किया गया है जिसकी वजह से
UseRequireInsteadOfGet
Lit की जांच करने की सुविधा,?.
और!!
ऑपरेटर के चेन इस्तेमाल को सही तरीके से हैंडल नहीं कर पाती. (b/157677616)
वर्शन 1.3.0-alpha05
20 मई, 2020
androidx.fragment:fragment:1.3.0-alpha05
, androidx.fragment:fragment-ktx:1.3.0-alpha05
, और androidx.fragment:fragment-testing:1.3.0-alpha05
रिलीज़ हो गए हैं. 1.3.0-alpha05 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
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
लिंट जांच में फ़ॉल्स पॉज़िटिव को ठीक किया गया. (b/149891163) - फ़्रैगमेंट
1.2.3
से: लेआउट की झलक में गलत कन्स्ट्रक्टर का इस्तेमाल करने पर,FragmentContainerView
अबUnsupportedOperationException
नहीं दिखाता. (b/149707833)
आम समस्याएं
BottomSheetDialogFragment
अब स्क्रीन पर डायलॉग बॉक्स को सही जगह पर नहीं दिखाता. (b/151652127)
वर्शन 1.3.0-alpha01
4 मार्च, 2020
androidx.fragment:fragment:1.3.0-alpha01
, androidx.fragment:fragment-ktx:1.3.0-alpha01
, और androidx.fragment:fragment-testing:1.3.0-alpha01
रिलीज़ हुए हैं. वर्शन 1.3.0-alpha01 में ये कमियां हैं.
नई सुविधाएं
- लाइफ़साइकल
2.3.0-alpha01
में जोड़े गए,ViewTreeLifecycleOwner.get(View)
एपीआई के लिए सहायता जोड़ी गई है, ताकि यहonCreateView()
से मिले सभी व्यू के लिए, फ़्रैगमेंट केviewLifecycleOwner
कोLifecycleOwner
के तौर पर दिखाए. (aosp/1182955)
एपीआई में हुए बदलाव
- फ़्रैगमेंट पर
setRetainInstance()
तरीका बंद कर दिया गया है. ViewModels की शुरुआत के साथ, डेवलपर के पास डेटा बनाए रखने के लिए एक खास एपीआई होता है, जिसे गतिविधियों, फ़्रैगमेंट, और नेविगेशन ग्राफ़ से जोड़ा जा सकता है. इससे डेवलपर, सामान्य और सेव नहीं किए गए फ़्रैगमेंट का इस्तेमाल कर सकते हैं. साथ ही, जिस खास स्टेट को सेव रखना है उसे अलग से रख सकते हैं. इससे, सेव की गई स्टेट को एक बार बनाने और उसे खत्म करने की काम की प्रॉपर्टी (जैसे,ViewModel
का कन्स्ट्रक्टर और उसे मिलने वालाonCleared()
कॉलबैक) को बनाए रखा जा सकता है. साथ ही, लीक के सामान्य सोर्स से बचा जा सकता है. (b/143911815) - ViewPager2
1.0.0
के रिलीज़ होने के बाद,ViewPager
के साथ इंटरैक्ट करने के लिएFragmentPagerAdapter
औरFragmentStatePagerAdapter
क्लास का इस्तेमाल नहीं किया जा सकता. ViewPager से ViewPager2 पर माइग्रेट करना लेख पढ़ें. (b/145132715)
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट ProGuard नियम अब सिर्फ़ डिफ़ॉल्ट कंस्ट्रक्टर
Fragment
क्लास को सही तरीके से सेव रखते हैं, न कि सभीFragment
इंस्टेंस के लिए इस्तेमाल किए जाने वाले. इससे फ़्रैगमेंट1.2.1
में किए गए रिग्रेशन को ठीक किया जा सकता है. (b/149665169 - फ़्रैगमेंट
1.2.2
में जोड़े गएrequire___()
Lint नियम, अब उन लोकल वैरिएबल के लिए गलत पॉज़िटिव नहीं दिखाते जिनका नाम, शेडो की गई Kotlin प्रॉपर्टी के नाम से मेल खाता है. जैसे,view
). (b/149891163) - Android Studio में लेआउट की झलक का इस्तेमाल करते समय,
FragmentContainerView
अबUnsupportedOperationException
नहीं दिखाता. (b/149707833) - एक समस्या को ठीक किया गया है. इसमें, सेव किए जाने के बाद जोड़े गए रिटेन किए गए फ़्रैगमेंट, कॉन्फ़िगरेशन में हर बदलाव के बाद फिर से बनाए नहीं जाते और नष्ट नहीं होते. (b/145832397)
वर्शन 1.2.5
वर्शन 1.2.5
10 जून, 2020
androidx.fragment:fragment:1.2.5
, androidx.fragment:fragment-ktx:1.2.5
, और androidx.fragment:fragment-testing:1.2.5
रिलीज़ हो गए हैं. 1.2.5 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट के लाइफ़साइकल के व्यवहार को दिखाने के लिए,
onSaveInstanceState()
को कॉल करने से पहले फ़्रैगमेंट काgetViewLifecycleOwner()
बंद कर दिया जाता है. इसे पहले फ़्रैगमेंट1.3.0-alpha04
में रिलीज़ किया गया था. (b/154645875) - किसी फ़्रैगमेंट पर
setMenuVisibility(false)
को कॉल करने से, अब उसके चाइल्ड फ़्रैगमेंट से दिए गए मेन्यू की दिखने की सेटिंग सही तरीके से बदल जाती है. इसे पहले फ़्रैगमेंट1.3.0-alpha04
में रिलीज़ किया गया था. (b/153593580)
वर्शन 1.2.4
वर्शन 1.2.4
1 अप्रैल, 2020
androidx.fragment:fragment:1.2.4
, androidx.fragment:fragment-ktx:1.2.4
, और androidx.fragment:fragment-testing:1.2.4
रिलीज़ हुए हैं. 1.2.4 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- रखे गए फ़्रैगमेंट को अस्पष्ट बनाने की अनुमति देने के लिए, फ़्रैगमेंट ProGuard के नियमों को अपडेट किया गया. (b/151605338)
DialogFragment
क्लास परFragmentLiveDataObserve
Lint नियम को बंद कर दिया गया है, क्योंकि उनका लाइफ़साइकल और व्यू का लाइफ़साइकल हमेशा सिंक रहता है. इससेobserve
को कॉल करते समय,this
याviewLifecycleOwner
में से किसी एक का इस्तेमाल करना सुरक्षित हो जाता है. (b/151765086)
वर्शन 1.2.3
वर्शन 1.2.3
18 मार्च, 2020
androidx.fragment:fragment:1.2.3
, androidx.fragment:fragment-ktx:1.2.3
, और androidx.fragment:fragment-testing:1.2.3
रिलीज़ हुए हैं. 1.2.3 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
DialogFragment
में एक गड़बड़ी को ठीक किया गया है. इसकी वजह से,onCreateDialog()
में जाकरgetLayoutInflater()
को कॉल करने परStackOverflowError
दिखता था. (b/117894767, aosp/1258665)- फ़्रैगमेंट में शामिल ProGuard नियमों के दायरे को कम किया गया, ताकि यह पक्का किया जा सके कि इस्तेमाल न किए गए फ़्रैगमेंट क्लास को हटाया जा सके. (b/149665169)
UseRequireInsteadOfGet
Lint की जांच में, गलत तरीके से मिलने वाले नतीजों को ठीक किया गया. ऐसा तब होता है, जब Kotlin प्रॉपर्टी के नाम की जगह किसी स्थानीय वैरिएबल का नाम इस्तेमाल किया जाता है. (b/149891163)FragmentContainerView
को अब लेआउट की झलक में गलत कंस्ट्रक्टर इस्तेमाल करने पर,UnsupportedOperationException
नहीं मिलता है. (b/149707833)
वर्शन 1.2.2
वर्शन 1.2.2
19 फ़रवरी, 2020
androidx.fragment:fragment:1.2.2
, androidx.fragment:fragment-ktx:1.2.2
, और androidx.fragment:fragment-testing:1.2.2
रिलीज़ हुए हैं. 1.2.2 वर्शन में ये बदलाव शामिल हैं.
Lint की नई जांच
- Lint,
onCreateView()
,onViewCreated()
, औरonActivityCreated()
मेंOnBackPressedDispatcher
में कॉल करने के लिए,viewLifecycleOwner
कोLifecycleOwner
के तौर पर इस्तेमाल करने का सुझाव देता है. (b/142117657) - एक नया लिंट चेक जोड़ा गया, जो यह पुष्टि करता है कि
fragment-testing
आर्टफ़ैक्ट का इस्तेमाल करते समय, सहीdebugImplementation
का इस्तेमाल किया जा रहा है. (b/141500106) - फ़्रैगमेंट अब
checkNotNull(get___())
,requireNonNull(get___())
याget___()!!
के बजाय,require___()
के तरीकों का इस्तेमाल करने का सुझाव देते हैं. ऐसा उन सभी फ़्रैगमेंट एपीआई के लिए किया जाता है जिनमेंget
औरrequire
, दोनों शामिल होते हैं. (aosp/1202883)
गड़बड़ियां ठीक की गईं
- R8 की चेतावनियों से बचने के लिए, फ़्रैगमेंट ProGuard फ़ाइलों को ठीक किया गया (b/148963981)
observe
का इस्तेमाल करते समय,viewLifecycleOwner
का इस्तेमाल करने का सुझाव देने वाली मौजूदा Lint जांच को बेहतर बनाया गया है. इससेobserve
केlivedata-ktx
एक्सटेंशन के तरीके के वर्शन को भी मैनेज किया जा सकता है. (b/148996309)- Lint की कई जांचों के लिए फ़ॉर्मैटिंग ठीक की गई (aosp/1157012)
बाहरी योगदान
- Slack की ओर से
require___()
Lint की जांच करने की सुविधा देने के लिए, Zac Sweers का धन्यवाद! (aosp/1202883)
वर्शन 1.2.1
वर्शन 1.2.1
5 फ़रवरी, 2020
androidx.fragment:fragment:1.2.1
, androidx.fragment:fragment-ktx:1.2.1
, और androidx.fragment:fragment-testing:1.2.1
रिलीज़ हो गए हैं. 1.2.1 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
add
औरreplace
मैथड की मदद से जोड़े गए फ़्रैगमेंट,Class
इंस्टेंस (या Kotlin के रीफ़ाइड वर्शन) लेते हैं. अब ProGuard, इन फ़्रैगमेंट के डिफ़ॉल्ट कन्स्ट्रक्टर को सेव रखता है. (b/148181315)finishUpdate()
को चलाते समय,FragmentStatePagerAdapter
औरFragmentPagerAdapter
अबFragmentManager
से मिले अपवादों को कैच नहीं करते. (aosp/1208711)- उस समस्या को ठीक किया गया है जिसकी वजह से
FragmentManager.findFragment()
,<fragment>
टैग के ज़रिए जोड़े गए फ़्रैगमेंट के साथ काम नहीं करता था. (b/147784323) <fragment>
टैग का इस्तेमाल करके फ़्लोरेट किए गए फ़्रैगमेंट को, लेआउट मेंonCreate()
से पहले हमेशाonInflate()
का कॉल मिलता है. (aosp/1215856)- अगर गतिविधि पहले ही खत्म हो चुकी है, तो
FragmentManager
इंस्टेंस परtoString()
को कॉल करने पर, अबNullPointerException
नहीं दिखता. (b/148189412)
डिपेंडेंसी में बदलाव
- फ़्रैगमेंट
1.2.1
अब लाइफ़साइकल व्यूमॉडल सेव की गई स्टेट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
या दूसरे लेआउट के इस्तेमाल की जगह लेता है. यह उसीclass
,android:name
, और वैकल्पिकandroid:tag
के साथ भी काम करता है जो<fragment>
टैग के साथ काम करता है. हालांकि, यह<fragment>
की ओर से इस्तेमाल किए गए कस्टम कोड पाथ के बजाय, इस शुरुआती फ़्रैगमेंट को जोड़ने के लिए, सामान्यFragmentTransaction
का इस्तेमाल करता है. onDestroyView()
का समय: फ़्रैगमेंट अबonDestroyView()
को कॉल करने से पहले, बाहर निकलने के ऐनिमेशन, बाहर निकलने के फ़्रेमवर्क ट्रांज़िशन, और बाहर निकलने के AndroidX ट्रांज़िशन (ट्रांज़िशन1.3.0
का इस्तेमाल करते समय) के पूरा होने का इंतज़ार करते हैं.- क्लास आधारित
add()
औरreplace()
:FragmentTransaction
परadd()
औरreplace()
के नए ओवरलोड जोड़े गए. साथ ही,Class<? extends Fragment>
और वैकल्पिकBundle
आर्ग्युमेंट इस्तेमाल किए गए. ये तरीके, जोड़े जाने वाले फ़्रैगमेंट का इंस्टेंस बनाने के लिए, आपकेFragmentFactory
का इस्तेमाल करते हैं.fragment-ktx
में ऐसे Kotlin एक्सटेंशन जोड़ दिए गए हैं जो सुधार किए गए टाइप (जैसे,fragmentTransaction.replace<YourFragment>(R.id.container)
) का इस्तेमाल करते हैं. - लाइफ़साइकल ViewModel सेव की गई स्थिति का इंटिग्रेशन: फ़्रेगमेंट के साथ
by viewModels()
,by activityViewModels()
,ViewModelProvider
कन्स्ट्रक्टर याViewModelProviders.of()
का इस्तेमाल करते समय, अबSavedStateViewModelFactory
डिफ़ॉल्ट फ़ैक्ट्री के तौर पर इस्तेमाल किया जाता है. - लिंट की नई जांच: लिंट की एक नई जांच जोड़ी गई है. इससे यह पक्का किया जा सकेगा कि
onCreateView()
,onViewCreated()
याonActivityCreated()
सेLiveData
को देखते समय,getViewLifecycleOwner()
का इस्तेमाल किया जा रहा है. getFragmentManager()
का इस्तेमाल बंद किया जा रहा है: फ़्रैगमेंट परgetFragmentManager()
औरrequireFragmentManager()
मेथड का इस्तेमाल बंद कर दिया गया है. साथ ही, इन्हें एकgetParentFragmentManager()
मेथड से बदल दिया गया है. यह मेथड, फ़्रैगमेंट में जोड़े गए नॉन-नलFragmentManager
को दिखाता है.isAdded()
का इस्तेमाल करके यह पता लगाया जा सकता है कि फ़्रैगमेंट को कॉल करना सुरक्षित है या नहीं.FragmentManager.enableDebugLogging()
का इस्तेमाल बंद किया जा रहा है: स्टैटिकFragmentManager.enableDebugLogging
तरीके का इस्तेमाल बंद कर दिया गया है. FragmentManager अब टैगFragmentManager
के लिएLog.isLoggable()
का इस्तेमाल करता है. इससे, अपने ऐप्लिकेशन को फिर से कंपाइल किए बिना,DEBUG
याVERBOSE
लॉगिंग को चालू किया जा सकता है.
आम समस्याएं
FragmentContainerView
पर सिर्फ़class
याandroid:name
एट्रिब्यूट के ज़रिए रेफ़र किए गए फ़्रैगमेंट, ProGuard अपने-आप नहीं रखता. इसके लिए, आपको हर फ़्रैगमेंट क्लास के लिए, मैन्युअल रूप से 'रखें' नियम जोड़ना होगा. (b/142601969)FragmentContainerView
के साथ एक्सएमएल मेंclass
याandroid:name
का इस्तेमाल करकेNavHostFragment
जोड़ने पर, अपनी गतिविधि केonCreate()
मेंfindNavController()
का इस्तेमाल नहीं किया जा सकता. (b/142847973)
वर्शन 1.2.0-rc05
8 जनवरी, 2020
androidx.fragment:fragment:1.2.0-rc05
, androidx.fragment:fragment-ktx:1.2.0-rc05
, और androidx.fragment:fragment-testing:1.2.0-rc05
रिलीज़ हो गए हैं. 1.2.0-rc05 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
<fragment>
टैग का इस्तेमाल करते समय, फ़्रैगमेंट1.2.0-rc04
में एक समस्या को ठीक किया गया. इस समस्या की वजह से, गतिविधि को मिटाने के दौरानonViewCreated()
को गलत तरीके से कॉल किया गया था. (b/146290333)<fragment>
टैग के साथ जोड़े गए फ़्रैगमेंट अब सही तरीके से अपने नॉन-कॉन्फ़िगरेशन को मिटा दिए गए हैं, भले ही वे कभी-कभी लेआउट में हों (जैसे, सिर्फ़ आपके लैंडस्केप लेआउट में). इस वजह से, ये फ़्रैगमेंट अबCREATED
में सही तरीके से मूव हो जाते हैं. भले ही, वे आपके लेआउट में न हों. साथ ही, इन्हें इंस्टैंशिएट करने के बजाय, लाइफ़साइकल के किसी भी तरीके से कभी भी मूव नहीं किया जाता. (b/145769287)
वर्शन 1.2.0-rc04
18 दिसंबर, 2019
androidx.fragment:fragment:1.2.0-rc04
, androidx.fragment:fragment-ktx:1.2.0-rc04
, और androidx.fragment:fragment-testing:1.2.0-rc04
रिलीज़ हो गए हैं. 1.2.0-rc04 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- विज़ुअल से जुड़ी समस्याओं से बचने के लिए,
TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
, औरTRANSIT_FRAGMENT_FADE
के ऐनिमेशन में बदलाव किया गया है. (b/145468417)
वर्शन 1.2.0-rc03
4 दिसंबर, 2019
androidx.fragment:fragment:1.2.0-rc03
, androidx.fragment:fragment-ktx:1.2.0-rc03
, और androidx.fragment:fragment-testing:1.2.0-rc03
रिलीज़ हो गए हैं. वर्शन 1.2.0-rc03 में ये कमियां शामिल हैं.
गड़बड़ियां ठीक की गईं
- एक गड़बड़ी को ठीक किया गया है, जिसमें हटाए गए फ़्रैगमेंट को
findFragmentById()
/findFragmentByTag()
से अब भी दिखाया जा रहा था. ऐसा तब होता था, जब उनके ऐनिमेशन/ट्रांज़िशन चल रहे होते थे. (b/143982969, aosp/1167585) - जब शामिल गतिविधि
onSaveInstanceState()
को कॉल करती है, तब चाइल्ड फ़्रैगमेंट अब उनके माता-पिता से पहले ठीक तरह से बंद हो जाते हैं. (b/144380645) - उस समस्या को ठीक किया गया है जिसमें छिपे हुए फ़्रैगमेंट को पॉप अप करने के बाद, व्यू को
INVISIBLE
के तौर पर गलत तरीके से मार्क किया जा रहा था. (b/70793925) - फ़्रैगमेंट शेयर किए गए एलिमेंट ट्रांज़िशन, अब ऐसे व्यू हैंडल करते हैं जिन्हें घुमाया गया, स्केल किया गया वगैरह. (b/142835261)
दस्तावेज़ से जुड़े अपडेट
setUserVisibleHint()
के आस-पास, काम रोकने से जुड़े दस्तावेज़ के बारे में पूरी जानकारी दी गई. (b/143897055)setFragmentFactory()
औरgetFragmentFactory()
के दस्तावेज़ को बेहतर बनाया गया है, ताकि यह बेहतर तरीके से बताया जा सके किFragmentFactory
सेट करने से, चाइल्ड फ़्रैगमेंट मैनेजर पर भी असर पड़ेगा. (aosp/1170095)
डिपेंडेंसी में बदलाव
- फ़्रैगमेंट अब लाइफ़साइकल
2.2.0-rc03
, लाइफ़साइकल ViewModel सेव की गई स्थिति1.0.0-rc03
, और ऐक्टिविटी1.1.0-rc03
पर निर्भर करते हैं.
वर्शन 1.2.0-rc02
7 नवंबर, 2019
androidx.fragment:fragment:1.2.0-rc02
, androidx.fragment:fragment-ktx:1.2.0-rc02
, और androidx.fragment:fragment-testing:1.2.0-rc02
रिलीज़ हुए हैं. 1.2.0-rc02 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Kotlin में,
onCreateView()
,onViewCreated()
याonActivityCreated()
सेLiveData
को देखते समयgetViewLifecycleOwner()
का इस्तेमाल करने के लिए, LintFix अबgetViewLifecycleOwner()
के बजाय Kotlin प्रॉपर्टी ऐक्सेस सिंटैक्सviewLifecycleOwner
का इस्तेमाल करता है. यह सुविधा फ़्रैगमेंट1.2.0-rc01
में लॉन्च की गई थी. (aosp/1143821)
वर्शन 1.2.0-rc01
23 अक्टूबर, 2019
androidx.fragment:fragment:1.2.0-rc01
, androidx.fragment:fragment-ktx:1.2.0-rc01
, और androidx.fragment:fragment-testing:1.2.0-rc01
रिलीज़ हो गए हैं. 1.2.0-rc01 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
FragmentContainerView
अबandroid:name
के साथ-साथclass
एट्रिब्यूट के साथ भी काम करता है. यह<fragment>
टैग की सुविधाओं को दिखाता है. (b/142722242)- लिंट की एक नई जांच जोड़ी गई है. इससे यह पक्का किया जा सकेगा कि
onCreateView()
,onViewCreated()
याonActivityCreated()
सेLiveData
को देखते समय,getViewLifecycleOwner()
का इस्तेमाल किया जा रहा है. (b/137122478)
गड़बड़ियां ठीक की गईं
DialogFragment
पर मौजूदonDismiss
औरonCancel
कॉलबैक अब यह पक्का करते हैं कि उन्हें पास किया गयाDialogInterface
नॉल नहीं है और उन्हें लागू करने परgetDialog()
नॉल नहीं दिखाता. (b/141974033)FragmentContainerView
अब इनफ़्लेशन के हिस्से के तौर परclass
याandroid:name
के तय किए गए फ़्रैगमेंट को जोड़ता है. इससे यह पक्का किया जाता है किfindFragmentById()
औरfindFragmentByTag()
इसके बाद तुरंत काम करें. (b/142520327)- स्टेटस सेव होने की वजह से,
FragmentContainerView
मेंIllegalStateException
को ठीक किया गया. (b/142580713) FragmentContainerView
क्लास को गुप्त करने पर,FragmentContainerView
में मौजूदUnsupportedOperationException
को ठीक किया गया. (b/142657034)
आम तौर पर होने वाली समस्याएं
FragmentContainerView
पर सिर्फ़class
याandroid:name
एट्रिब्यूट के ज़रिए रेफ़र किए गए फ़्रैगमेंट, ProGuard अपने-आप नहीं रखता. इसके लिए, आपको हर फ़्रैगमेंट क्लास के लिए, मैन्युअल रूप से 'रखें' नियम जोड़ना होगा. जब तक इस समस्या कोaapt2
के ज़रिए ठीक नहीं किया जाता, तब तक हमनेFragmentContainerView
पर ले जाने का सुझाव देने वाले लिंट के नियम को बंद कर दिया है. (b/142601969)
वर्शन 1.2.0-beta02
11 अक्टूबर, 2019
androidx.fragment:fragment:1.2.0-beta02
, androidx.fragment:fragment-ktx:1.2.0-beta02
, और androidx.fragment:fragment-testing:1.2.0-beta02
रिलीज़ हो गए हैं. 1.2.0-beta02 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- एक समस्या को ठीक किया गया है. इसमें फ़्रैगमेंट के
onInflate()
कोFragmentContainerView
से सही एट्रिब्यूट नहीं मिल रहे थे. इस वजह से,NavHostFragment
जैसे मामले सामने आ रहे थे. (b/142421837)
वर्शन 1.2.0-beta01
9 अक्टूबर, 2019
androidx.fragment:fragment:1.2.0-beta01
, androidx.fragment:fragment-ktx:1.2.0-beta01
, और androidx.fragment:fragment-testing:1.2.0-beta01
रिलीज़ हो गए हैं. 1.2.0-beta01 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
FragmentContainerView
, शुरुआती फ़्रैगमेंट जोड़ने की सुविधा जोड़ता है. इसमेंandroid:name
और वैकल्पिकandroid:tag
एक्सएमएल एट्रिब्यूट के लिए भी सहायता जोड़ी गई है.<fragment>
टैग के उलट,FragmentContainerView
शुरुआती फ़्रैगमेंट जोड़ने के लिए, सामान्यFragmentTransaction
का इस्तेमाल करता है. इससेFragmentContainerView
परFragmentTransaction
के अन्य ऑपरेशन करने की अनुमति मिलती है. साथ ही, लेआउट के लिए व्यू बाइंडिंग का इस्तेमाल करने की सुविधा मिलती है. (b/139830628, b/141177981)- फ़्रैगमेंट में अब Lint चेतावनी शामिल है. इसमें
<fragment>
कोFragmentContainerView
से बदलने के लिए, तुरंत ठीक करने का विकल्प दिया गया है. (b/139830056)
गड़बड़ियां ठीक की गईं
androidx.transition
का इस्तेमाल करते समयClassCastException
से जुड़ी गड़बड़ी को ठीक किया गया. (b/140680619)- ट्रांज़िशन
1.3.0-beta01
का इस्तेमाल करते समय, फ़्रैगमेंट अबonDestroyView()
डिस्पैच करने से पहले,androidx.transition
ट्रांज़िशन (फ़्रेमवर्क ट्रांज़िशन और ऐनिमेशन के अलावा, जिन्हें फ़्रैगमेंट1.2.0-alpha03
और फ़्रैगमेंट1.2.0-alpha02
में ठीक किया गया था) के पूरा होने का इंतज़ार करते हैं. (aosp/1119841) - ट्रांज़िशन
1.3.0-beta01
का इस्तेमाल करते समय, फ़्रैगमेंट अब एक ही कंटेनर पर नए ट्रांज़िशन / ऐनिमेशन शुरू करने से पहले,androidx.transition
ट्रांज़िशन को सही तरीके से रद्द कर देते हैं. (aosp/1119841) FragmentContainerView
का इस्तेमाल करते समय, अपने फ़्रैगमेंट के रूट व्यू परandroidx.transition
ट्रांज़िशन का इस्तेमाल करने पर, एपीआई 17 और उससे पहले के वर्शन में आ रही समस्या को ठीक किया गया. (b/140361893)fragment-testing
आर्टफ़ैक्ट अब AndroidX Test1.2.0
पर निर्भर है, जिसमें सबसे नए Espresso 3.2.0 के साथ काम करने की क्षमता को ठीक किया गया है. (b/139100149)- फ़्रैगमेंट मैनेजर में
Log.w
का इस्तेमाल हटाया गया. (aosp/1126468)
आम समस्याएं
- फ़्रैगमेंट के
onInflate()
कोFragmentContainerView
से सही एट्रिब्यूट नहीं मिलते. इससेNavHostFragment
जैसे ब्रेकिंग केस बनते हैं. (b/142421837)
वर्शन 1.2.0-alpha04
18 सितंबर, 2019
androidx.fragment:fragment:1.2.0-alpha04
, androidx.fragment-ktx:example:1.2.0-alpha04
, और androidx.fragment:fragment-testing:1.2.0-alpha04
रिलीज़ हो गए हैं. 1.2.0-alpha04 वर्शन में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
Fragment
परgetFragmentManager()
औरrequireFragmentManager()
तरीकों का इस्तेमाल बंद कर दिया गया है. साथ ही, उन्हें एकgetParentFragmentManager()
तरीके से बदल दिया गया है. यह तरीका, उसFragmentManager
को दिखाता है जिसमें फ़्रैगमेंट जोड़ा गया है. यहFragmentManager
नॉन-नल होता है.isAdded()
का इस्तेमाल करके यह पता लगाया जा सकता है कि इसे कॉल करना सुरक्षित है या नहीं. (b/140574496)- स्टैटिक
FragmentManager.enableDebugLogging
तरीका बंद कर दिया गया है. फ़्रैगमेंट Manager, अबFragmentManager
टैग के लिएLog.isLoggable()
के हिसाब से काम करता है. इससे आपके ऐप्लिकेशन को फिर से कंपाइल किए बिना हीDEBUG
याVERBOSE
में लॉग इकट्ठा करने की सुविधा चालू की जा सकती है. (aosp/1116591)
गड़बड़ियां ठीक की गईं
- अब दूसरे फ़्रैगमेंट से बाहर निकलने के ऐनिमेशन चलने के दौरान, फ़्रैगमेंट को सही तरीके से हटा दिया जाता है. (b/140574199)
- समस्या को ठीक किया गया है जहां फ़्रैगमेंट,
Activity.findViewById()
को कॉल करते थे, जहां पहले नहीं होता था. (aosp/1116431)
वर्शन 1.2.0-alpha03
5 सितंबर, 2019
androidx.fragment:fragment:1.2.0-alpha03
, androidx.fragment:fragment-ktx:1.2.0-alpha03
, और androidx.fragment:fragment-testing:1.2.0-alpha03
रिलीज़ हो गए हैं. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.
एपीआई में हुए बदलाव
FragmentContainerView
अबfinal
हो गया है. (b/140133091)
गड़बड़ियां ठीक की गईं
- बैक स्टैक से फ़्रैगमेंट को पॉप-अप करने पर,
FragmentContainerView
अब ड्रॉ का क्रम उलट देता है. (b/139104187) - एक ही समय पर फ़्रैगमेंट को पॉप अप करने और नया फ़्रैगमेंट जोड़ने पर, गलत ऐनिमेशन चलने की समस्या को ठीक किया गया. (b/111659726)
- फ़्रैगमेंट अब
onDestroyView()
भेजने से पहले, ऐनिमेशन के साथ-साथ ट्रांज़िशन के पूरा होने का इंतज़ार करते हैं. ऐनिमेशन की समस्या को फ़्रैगमेंट1.2.0-alpha02
में ठीक किया गया था. (b/138741697)
वर्शन 1.2.0-alpha02
7 अगस्त, 2019
androidx.fragment:fragment:1.2.0-alpha02
, androidx.fragment:fragment-ktx:1.2.0-alpha02
, और androidx.fragment:fragment-testing:11.2.0-alpha02
रिलीज़ हो गया है. इस वर्शन में शामिल कमिट को यहां देखा जा सकता है.
नई सुविधाएं
SavedStateViewModelFactory
को डिफ़ॉल्ट फ़ैक्ट्री के तौर पर सेट कर दिया गया है. इसेFragment
के साथby viewModels()
,by activityViewModels()
,ViewModelProvider
कंस्ट्रक्टर याViewModelProviders.of()
का इस्तेमाल करते समय इस्तेमाल किया जाता है. (b/135716331)FragmentTransaction
परsetTransition
के साथTRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
,TRANSIT_FRAGMENT_FADE
का इस्तेमाल करने पर दिखने वाले डिफ़ॉल्ट ऐनिमेशन को अपडेट कर दिया गया है. ऐसा इसलिए किया गया है, ताकि ये ऐनिमेशन, Android 10 डिवाइसों पर गतिविधियों के लिए इस्तेमाल किए जाने वाले ऐनिमेशन से मेल खा सकें. (aosp/1012812, aosp/1014730)
एपीआई में किए गए बदलाव
- डाइनैमिक तौर पर जोड़े गए फ़्रैगमेंट के लिए,
FragmentContainerView
को सबसे ज़्यादा सुझाया गया कंटेनर के तौर पर पेश किया गया है. यहFrameLayout
वगैरह के इस्तेमाल की जगह लेता है, क्योंकि यह ऐनिमेशन की z-क्रम से जुड़ी समस्याओं को ठीक करता है और फ़्रैगमेंट में विंडो इनसेट डिस्पैच करता है. (b/37036000, aosp/985243, b/136494650) - फ़्रैगमेंट से फ़ुल किए गए व्यू से, उसमें मौजूद फ़्रैगमेंट को वापस पाने के लिए, स्टैटिक
FragmentManager.findFragment(View)
तरीका जोड़ा गया.fragment-ktx
में Kotlin एक्सटेंशन भी उपलब्ध है. (aosp/1090757) FragmentTransaction
परadd()
औरreplace()
के नए ओवरलोड जोड़े गए हैं. ये ओवरलोड, आर्ग्युमेंट के तौर परClass<? extends Fragment>
और वैकल्पिक तौर परBundle
लेते हैं. ये तरीके, जोड़ने के लिए फ़्रैगमेंट का एक इंस्टेंस बनाने के लिए आपकेFragmentFactory
का इस्तेमाल करते हैं.fragment-ktx
में ऐसे Kotlin एक्सटेंशन को भी जोड़ दिया गया है जो सुधार किए गए टाइप (जैसे,fragmentTransaction.replace<YourFragment>(R.id.container)
) का इस्तेमाल करता है. (b/126124987)Fragment
लाइफ़साइकल कॉलबैक में@MainThread
एनोटेशन जोड़े गए. (b/127272564)FragmentTransaction
औरFragmentManager.BackStackEntry
पर ब्रेडक्रंब टाइटल से जुड़े एपीआई इस्तेमाल नहीं किए जा सकते. (b/138252944)FragmentTransaction
परsetTransitionStyle
तरीके का इस्तेमाल नहीं किया जा सकता. (aosp/1011537)FragmentManager
में मौजूद कई तरीके अबabstract
नहीं हैं.FragmentManager
,abstract
ही रहता है और इसे सीधे तौर पर इंस्टैंशिएट या एक्सटेंड नहीं किया जाना चाहिए. आपकोgetSupportFragmentManager()
,getChildFragmentManager()
वगैरह से सिर्फ़ मौजूदा इंस्टेंस मिलना चाहिए.
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट
1.1.0-rc04
से: फ़्रैगमेंट अब पॉप होने पर, फ़्रैगमेंट पर पोस्टपोन किए गए ट्रांज़िशन को सही तरीके से रद्द कर देते हैं. (b/138251858) - फ़्रैगमेंट
1.1.0-rc03
से: टाइम आउट के साथpostponeEnterTransition()
को एक से ज़्यादा बार कॉल करने पर, पिछले टाइम आउट रद्द नहीं होने की समस्या को ठीक किया गया. (b/137797118) - फ़्रैगमेंट
1.1.0-rc02
से: मौजूदा आइटम हटाते समय,FragmentPagerAdapter
औरFragmentStatePagerAdapter
में क्रैश होने की समस्या को ठीक किया गया. (b/137209870) - फ़्रैगमेंट अब
onDestroyView()
भेजने से पहले ऐनिमेशन के खत्म होने का इंतज़ार करते हैं. (b/136110528) - पैरंट फ़्रैगमेंट को ऐनिमेट करते समय, चाइल्ड फ़्रैगमेंट और उनके वंशजों के फ़्रैगमेंट ऐनिमेशन को अब सही तरीके से मैनेज किया जाता है. (b/116675313)
- शेयर किए गए एलिमेंट के ट्रांज़िशन का इस्तेमाल करते समय, पॉप और जोड़ने की कार्रवाई को जोड़ने पर आ रही
NullPointerException
गड़बड़ी को ठीक किया गया. (b/120507394) - Robolectric में
FragmentPagerAdapter
औरFragmentStatePagerAdapter
का इस्तेमाल करते समय,IllegalStateException
में एक समाधान जोड़ा गया. (b/137201343)
वर्शन 1.2.0-alpha01
2 जुलाई, 2019
androidx.fragment:fragment:1.2.0-alpha01
, androidx.fragment:fragment-ktx:1.2.0-alpha01
, और androidx.fragment:fragment-testing:1.2.0-alpha01
रिलीज़ हो गए हैं. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.
नई सुविधाएं
- FragmentManager अब फ़्रैगमेंट के व्यू को अटैच करने के बाद और
onViewCreated()
को कॉल करने से ठीक पहले,requestApplyInsets()
को कॉल करता है. इससे यह पक्का होता है कि आपके व्यू में हमेशा सही इनसेट हों. (b/135945162)
गड़बड़ियां ठीक की गईं
FragmentTransaction
को पॉप करते समयNullPointerException
को ठीक किया गया, जिसनेreplace()
से पहलेsetPrimaryNavigationFragment()
का इस्तेमाल किया था. (b/134673465)
वर्शन 1.1.0
वर्शन 1.1.0
5 सितंबर, 2019
androidx.fragment:fragment:1.1.0
, androidx.fragment:fragment-ktx:1.1.0
, और androidx.fragment:fragment-testing:1.1.0
रिलीज़ हो गए हैं. इस वर्शन में शामिल कमिट को यहां देखा जा सकता है.
1.0.0 के बाद किए गए अहम बदलाव
- fragment-testing:
fragment-testing
आर्टफ़ैक्ट, किसी फ़्रैगमेंट की अलग से जांच करने के लिएFragmentScenario
क्लास उपलब्ध कराता है. ज़्यादा जानकारी के लिए, अपने ऐप्लिकेशन के फ़्रैगमेंट की जांच करने के बारे में दस्तावेज़ देखें. - FragmentFactory: अब फ़्रैगमेंट इंस्टेंस बनाने के लिए,
FragmentManager
परFragmentFactory
सेट किया जा सकता है. इससे, बिना आर्ग्युमेंट वाले कन्स्ट्रक्टर की ज़रूरी शर्त को हटा दिया गया है. - ViewModels के लिए Kotlin प्रॉपर्टी डेलिगेट:
fragment-ktx
आर्टफ़ैक्ट में अब दो Kotlin प्रॉपर्टी डेलिगेट हैं:by viewModels()
, अलग-अलग फ़्रैगमेंट से जुड़े ViewModels को ऐक्सेस करने के लिए औरby activityViewModels()
, ऐक्टिविटी के दायरे में आने वाले ViewModels को ऐक्सेस करने के लिए. - लाइफ़साइकल की ज़्यादा से ज़्यादा अवधि: अब किसी फ़्रैगमेंट के लिए लाइफ़साइकल की ज़्यादा से ज़्यादा अवधि सेट की जा सकती है. इसके लिए,
FragmentTransaction
परsetMaxLifecycle()
को कॉल करें. यह अब काम न करने वालेsetUserVisibleHint()
की जगह ले लेगा.FragmentPagerAdapter
औरFragmentStatePagerAdapter
में नया कंस्ट्रक्टर है, जो आपको नए बिहेवियर पर स्विच करने देता है. - फ़्रैगमेंट ऐक्टिविटी लेआउट आईडी कंस्ट्रक्टर:
FragmentActivity
के सब-क्लास अबFragmentActivity
पर ऐसे कंस्ट्रक्टर को कॉल कर सकते हैं जोR.layout
आईडी लेता है. इससे यह पता चलता है कि लेआउट कोonCreate()
मेंsetContentView()
को कॉल करने के बजाय, कॉन्टेंट व्यू के तौर पर सेट किया जाना चाहिए. इससे, आपके सबक्लास में कोई आर्ग्युमेंट वाला कंस्ट्रक्टर होना ज़रूरी है. - फ़्रैगमेंट LayoutId कंस्ट्रक्टर:
Fragment
के सबक्लास अबFragment
पर मौजूद उस कंस्ट्रक्टर को कॉल कर सकते हैं जोR.layout
आईडी लेता है. इससे यह पता चलता है किonCreateView()
को बदलने के बजाय, इस फ़्रैगमेंट के लिए किस लेआउट का इस्तेमाल किया जाना चाहिए. बड़ा किया गया लेआउट,onViewCreated()
में कॉन्फ़िगर किया जा सकता है. - टाइम आउट के साथ पोस्टपोन करें:
postponeEnterTransition()
का एक नया ओवरलोड जोड़ा गया है, जिसमें टाइम आउट लगता है.
वर्शन 1.1.0-rc04
7 अगस्त, 2019
androidx.fragment:fragment:1.1.0-rc04
, androidx.fragment:fragment-ktx:1.1.0-rc04
, और androidx.fragment:fragment-testing:1.1.0-rc04
रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट अब सही तरीके से फ़्रैगमेंट पर किए गए ऐसे ट्रांज़िशन को रद्द कर देते हैं जो फ़िलहाल टाल दिए गए हैं. (b/138251858)
वर्शन 1.1.0-rc03
19 जुलाई, 2019
androidx.fragment:fragment:1.1.0-rc03
, androidx.fragment:fragment-ktx:1.1.0-rc03
, और androidx.fragment:fragment-testing:1.1.0-rc03
रिलीज़ हो गया है. इस वर्शन में शामिल कमिट को यहां देखा जा सकता है.
गड़बड़ियां ठीक की गईं
- टाइम आउट के साथ
postponeEnterTransition()
को एक से ज़्यादा बार कॉल करने पर, पिछले टाइम आउट रद्द न होने की समस्या को ठीक किया गया. (b/137797118)
वर्शन 1.1.0-rc02
17 जुलाई, 2019
androidx.fragment:fragment:1.1.0-rc02
, androidx.fragment:fragment-ktx:1.1.0-rc02
, और androidx.fragment-testing:fragment:1.1.0-rc02
रिलीज़ हो गए हैं. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.
गड़बड़ियां ठीक की गईं
- मौजूदा आइटम हटाते समय,
FragmentPagerAdapter
औरFragmentStatePagerAdapter
में क्रैश होने की समस्या को ठीक किया गया. (b/137209870)
वर्शन 1.1.0-rc01
2 जुलाई, 2019
androidx.fragment:fragment:1.1.0-rc01
, androidx.fragment:fragment-ktx:1.1.0-rc01
, और androidx.fragment:fragment-testing:1.1.0-rc01
रिलीज़ हो गए हैं. इस वर्शन में शामिल कमिट को यहां देखा जा सकता है.
गड़बड़ियां ठीक की गईं
- ट्रांज़िशन के दौरान
show()
याhide()
ऑपरेशन का इस्तेमाल करने पर, फ़्रैगमेंट अब अपनी विज़िबिलिटी को सही तरीके से अपडेट करते हैं. (b/133385058) FragmentTransaction
को पॉप करते समयNullPointerException
को ठीक किया गया, जिसनेreplace()
से पहलेsetPrimaryNavigationFragment()
का इस्तेमाल किया था. (b/134673465)
वर्शन 1.1.0-beta01
5 जून, 2019
androidx.fragment:fragment:1.1.0-beta01
, androidx.fragment:fragment-ktx:1.1.0-beta01
, और androidx.fragment:fragment-testing:1.1.0-beta01
रिलीज़ हो गए हैं. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.
गड़बड़ियां ठीक की गईं
- नेस्ट किए गए फ़्रैगमेंट के लिए,
androidx.lifecycle.Lifecycle
कॉलबैक (खास तौर परSTARTED
,RESUMED
,PAUSED
,STOPPED
, औरDESTROYED
से जुड़े) अब सही तरीके से नेस्ट किए गए हैं. (b/133497591) - किसी फ़्रैगमेंट के
onCreate()
में रजिस्टर किए गएOnBackPressedCallback
इंस्टेंस, अब चाइल्ड FragmentManager के मुकाबले प्राथमिकता पाते हैं. (b/133175997) - पैरंट फ़्रैगमेंट को बदलने पर, चाइल्ड फ़्रैगमेंट अब ऐनिमेशन नहीं दिखाते. (b/121017790)
animateLayoutChanges="true"
का इस्तेमाल करते समय, अब फ़्रैगमेंट के ऐनिमेशन और ट्रांज़िशन को अनदेखा कर दिया जाता है. इससे, फ़्रैगमेंट को सही तरीके से नष्ट न करने की समस्या को ठीक किया गया है. (b/116257087)
वर्शन 1.1.0-alpha09
16 मई, 2019
androidx.fragment:fragment:1.1.0-alpha09
, androidx.fragment:fragment-ktx:1.1.0-alpha09
, और androidx.fragment:fragment-testing:1.1.0-alpha09
रिलीज़ हो गए हैं. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.
एपीआई में हुए बदलाव
- प्राइमरी नेविगेशन फ़्रैगमेंट में बदलाव होने पर, फ़्रैगमेंट को अब नए
onPrimaryNavigationFragmentChanged(boolean)
तरीके का कॉलबैक मिलता है. aosp/960857
गड़बड़ियां ठीक की गईं
- चाइल्ड फ़्रैगमेंट की वजह से बढ़ा हुआ मेन्यू आइटम, अब पैरंट फ़्रैगमेंट को हटाने पर सही तरीके से हट जाता है. b/131581013
वर्शन 1.1.0-alpha08
7 मई, 2019
androidx.fragment:fragment:1.1.0-alpha08
, androidx.fragment:fragment-ktx:1.1.0-alpha08
, और androidx.fragment:fragment-testing:1.1.0-alpha08
रिलीज़ हुए हैं. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.
यह रिलीज़ प्राथमिकताओं 1.1.0-alpha01 से लेकर 1.1.0-alpha04 तक के साथ काम नहीं करती है. फ़्रैगमेंट के इस वर्शन का इस्तेमाल करते समय, कृपया Preferences 1.1.0-alpha05 पर अपग्रेड करें.
नई सुविधाएं
postponeEnterTransition()
का एक नया ओवरलोड जोड़ा गया है, जिसमें टाइम आउट लगता है. इसके बाद, फ़्रैगमेंट अपने-आपstartPostponedEnterTransition()
b/120803208 को कॉल करेगा
एपीआई में हुए बदलाव
- अहम बदलाव:
FragmentFactory
instantiate
का वह तरीका हटा दिया गया है जिसे पहले बंद कर दिया गया था. यह तरीकाBundle
लेता था. aosp/953856 - अहम बदलाव:
FragmentPagerAdapter
औरFragmentStatePagerAdapter
में मौजूदRESUME_ONLY_CURRENT_FRAGMENT
औरUSE_SET_USER_VISIBLE_HINT
कॉन्स्टेंट का नाम बदलकर, क्रमशःBEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
औरBEHAVIOR_SET_USER_VISIBLE_HINT
कर दिया गया है. aosp/954782
गड़बड़ियां ठीक की गईं
- जिन फ़्रैगमेंट का लाइफ़साइकल
setMaxLifecycle()
की मदद से तय किया गया है वे अपनी आखिरी स्थिति तक पहुंचने से पहले फिर से शुरू नहीं होते. b/131557151 setMaxLifecycle(Lifecycle.State.CREATED)
का इस्तेमाल करने पर, फ़्रैगमेंट का व्यू सही तरीके से खत्म हो जाएगा. aosp/954180
वर्शन 1.1.0-alpha07
25 अप्रैल, 2019
androidx.fragment:fragment:1.1.0-alpha07
, androidx.fragment:fragment-ktx:1.1.0-alpha07
, और androidx.fragment:fragment-testing:1.1.0-alpha07
रिलीज़ हुए हैं. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.
नई सुविधाएं
- अब किसी फ़्रैगमेंट के लिए, लाइफ़साइकल की ज़्यादा से ज़्यादा स्थिति सेट की जा सकती है. इसके लिए,
FragmentTransaction
परsetMaxLifecycle()
को कॉल करें. यह नीति, अब काम न करने वालीsetUserVisibleHint()
नीति की जगह ले लेगी.FragmentPagerAdapter
औरFragmentStatePagerAdapter
में नया कंस्ट्रक्टर है, जो आपको नए बिहेवियर पर स्विच करने देता है. (b/129780800)
एपीआई में हुए बदलाव
FragmentScenario
परmoveToState(STARTED)
को अब सिर्फ़ एपीआई 24 के बाद के वर्शन वाले डिवाइसों पर कॉल किया जा सकता है. (b/129880016)
व्यवहार में बदलाव
- (b/129907905) की वजह से, होस्टिंग ऐक्टिविटी को फिर से बनाने पर, बैक स्टैक में मौजूद फ़्रैगमेंट को
onCreateView()
का कॉलबैक नहीं मिलेगा.onCreateView()
को अब सिर्फ़ तब कॉल किया जाएगा, जब फ़्रैगमेंट दिखने लगेगा. इसका मतलब है कि बैक स्टैक को पॉप किया जाएगा.
गड़बड़ियां ठीक की गईं
- एक्सएमएल में
<fragment>
टैग औरFragmentActivity
याAppCompatActivity
केcontentLayoutId
कन्स्ट्रक्टर का इस्तेमाल करते समय आने वाली समस्या को ठीक किया गया. (b/129907905) - हमने एक समस्या को ठीक किया है. इस समस्या की वजह से, कॉन्फ़िगरेशन में बदलाव करने के बाद, बैक स्टैक पर मौजूद फ़्रैगमेंट कम से कम
CREATED
पर नहीं ले जाए जाते थे. इस वजह से, ViewModel और बनाए गए चाइल्ड फ़्रैगमेंट को सही तरीके से डिस्पोज नहीं किया जा सकता था. (b/129593351) restoreSaveState
में क्रैश होने की समस्या को ठीक किया गया. यह समस्या, इंस्टेंस की स्थिति सेव होने के बाद, बनाए रखने वाले फ़्रैगमेंट के डिसिंक होने की वजह से आती थी. (b/130433793) (aosp/947824)- फ़्रैगमेंट लाइफ़साइकल के साथ जोड़े गए
OnBackPressedCallback
को तब नहीं बुलाया जाता था, जबFragmentManager
में बैक स्टैक होता था. इस समस्या को ठीक कर दिया गया है. ज़्यादा जानकारी के लिए, androidx.activity 1.0.0-alpha07 देखें. (aosp/948209) - फ़्रैगमेंट अब ऐनिमेशन के लिए
LAYER_TYPE_HARDWARE
लागू नहीं करते. अगर आपको खास तौर पर हार्डवेयर लेयर ऐनिमेशन की ज़रूरत है, तो कृपया उसे अपने ऐनिमेशन के हिस्से के तौर पर सेट करें. (b/129486478)
वर्शन 1.1.0-alpha06
3 अप्रैल, 2019
androidx.fragment:fragment:1.1.0-alpha06
, androidx.fragment:fragment-ktx:1.1.0-alpha06
, और androidx.fragment:fragment-testing:1.1.0-alpha06
रिलीज़ हो गए हैं. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.
नई सुविधाएं
- फ़्रैगमेंट Manager से मिलने वाले अपवादों में, अब मैसेज में फ़्रैगमेंट का नाम शामिल किया जाता है. (b/67759402)
एपीआई में हुए बदलाव
Fragment
औरFragmentActivity
में अब एक दूसरा कंस्ट्रक्टर है, जो@LayoutRes int
लेता है. यह@ContentView
के साथ आपकी क्लास को एनोटेट करने के पिछले व्यवहार की जगह लेता है. यह तरीका, ऐप्लिकेशन और लाइब्रेरी मॉड्यूल, दोनों में काम करता है. (b/128352521)- फ़्रैगमेंट ऐक्टिविटी के
onActivityResult()
को अब@CallSuper
के तौर पर सही तरीके से मार्क कर दिया गया है. (b/127971684) - FragmentFactory के
instantiate
तरीके को बंद कर दिया गया है. यह तरीका, बंडल के आर्ग्युमेंट के साथ काम करता था. ऐप्लिकेशन कोinstantiate
के नए ओवरलोड का इस्तेमाल करना चाहिए, जो बंडल के साथ काम नहीं करता. (b/128836103) FragmentScenario
के तरीकों को अब@StyleRes
के साथ सही तरीके से एनोटेट किया गया है. (aosp/924193)FragmentTabHost
का अब इस्तेमाल नहीं किया जा सकता. (b/127971835)- फ़्रैगमेंट ऐक्टिविटी का
getThemedContext()
हटा दिया गया है. (aosp/934078)
गड़बड़ियां ठीक की गईं
- 1.1.0-alpha05 में रिग्रेशन ठीक किया गया जिसकी वजह से इनकमिंग फ़्रैगमेंट स्क्रीन पर फ़्लैश हो गया. (b/129405432)
- उस समस्या को ठीक किया गया है जहां की कार्रवाइयों की पॉपबैकस्टैक+रिप्लेस+पॉपबैकस्टैक सीरीज़ के बाद मुख्य नेविगेशन फ़्रैगमेंट खो जाता है. (b/124332597)
- फ़्रैगमेंट की स्थिति को वापस लाने के दौरान, अपनी गतिविधि पर
@ContentView
कन्स्ट्रक्टर का इस्तेमाल करते समय आ रही समस्या को ठीक किया गया. (b/127313094) - किसी मौजूदा टारगेट फ़्रैगमेंट को ऐसे फ़्रैगमेंट से बदलने पर,
setTargetFragment()
के लॉजिक को ठीक किया गया है जो अब तक FragmentManager से अटैच नहीं हुआ है. (aosp/932156)
वर्शन 1.1.0-alpha05
13 मार्च, 2019
androidx.fragment:fragment:1.1.0-alpha05
, androidx.fragment:fragment-ktx:1.1.0-alpha05
, और androidx.fragment:fragment-testing:1.1.0-alpha05
रिलीज़ हुए हैं. इस वर्शन में शामिल कमिट की पूरी सूची यहां देखी जा सकती है.
नई सुविधाएं
@ContentView
एनोटेशन लुकअप को अब कैश मेमोरी में सेव किया गया है (b/123709449)
व्यवहार में बदलाव
- किसी दूसरे फ़्रैगमेंट मैनेजर से अटैच किए गए फ़्रैगमेंट के साथ,
remove()
,hide()
,show()
,detach()
, औरsetPrimaryNavigationFragment()
को कॉल करने पर, अब बिना किसी रुकावट के (aosp/904301)IllegalStateException
की गड़बड़ी होती है
गड़बड़ियां ठीक की गईं
FragmentActivity
के लिएonNewIntent
को अब सही तरीके से@CallSuper
(b/124120586) के साथ मार्क किया गया हैgetDialog().dismiss()
याgetDialog().cancel()
का इस्तेमाल करते समय,DialogFragment
केonDismiss()
को दो बार कॉल किए जाने की समस्या को ठीक किया गया (b/126563750)
वर्शन 1.1.0-alpha04
7 फ़रवरी, 2019
androidx.fragment:fragment 1.1.0-alpha04
, androidx.fragment:fragment-ktx 1.1.0-alpha04
, और androidx.fragment:fragment-testing 1.1.0-alpha04
रिलीज़ हुए हैं.
नई सुविधाएं
@ContentView
क्लास एनोटेशन के लिए सहायता जोड़ी गई है. इससे, यह बताया जा सकता है किonCreateView()
को बदलने के बजाय, कौनसी लेआउट एक्सएमएल फ़ाइल को फ़्लेट किया जाना चाहिए. हमारा सुझाव है कि व्यू से जुड़ा कामonViewCreated()
में करें. (aosp/837619)fragment-testing
अबandroidx.test:core-ktx
1.1.0 के स्टेबल वर्शन (b/121209673) पर निर्भर करता है- फ़्रैगमेंट के होस्ट किए गए विकल्पों के मेन्यू की जांच करने के लिए, अब
FragmentScenario
के साथopenActionBarOverflowOrOptionsMenu
का इस्तेमाल किया जा सकता है (b/121126668)
एपीआई में किए गए बदलाव
requireArguments()
का एक ऐसा तरीका जोड़ा गया है जो@NonNull Bundle
दिखाता है याIllegalStateException
दिखाता है (b/121196360)- एक नोट जोड़ा गया है कि
getLifecycle()
,getViewLifecycleOwner()
, औरgetViewLifecycleOwnerLiveData()
को बदला नहीं जाना चाहिए. साथ ही, आने वाले समय में रिलीज़ होने वाले वर्शन में इन्हें फ़ाइनल कर दिया जाएगा. अगर फ़िलहाल इस तरीके को बदला जा रहा है, तो कृपया सुविधा का अनुरोध करें. (aosp/880714) - एक नोट जोड़ा गया है कि
getViewModelStore()
को बदला नहीं जाना चाहिए. साथ ही, इसे आने वाले वर्शन में फ़ाइनल कर दिया जाएगा. अगर फ़िलहाल इस तरीके को बदला जा रहा है, तो कृपया सुविधा का अनुरोध करें. (aosp/880713) - फ़्रैगमेंट की पिछली रिलीज़ के साथ बाइनरी के काम करने से जुड़ी समस्या को ठीक किया गया. (aosp/887877) (aosp/889834)
गड़बड़ियां ठीक की गईं
null
कोsetTargetFragment()
में पास करने पर, टारगेट फ़्रैगमेंट सही तरीके से हट जाते हैं. (aosp/849969)onDestroy()
या उसके बाद, टारगेट फ़्रैगमेंट कभी-कभी उपलब्ध न होने की समस्या को ठीक किया गया. (b/122312935)- Dialogफ़्रैगमेंट का onखारिज() अब
onDestroy()
से पहले कॉल किया जाता है. (aosp/874133) (aosp/890734)
वर्शन 1.1.0-alpha03
17 दिसंबर, 2018
नई सुविधाएं
- फ़्रैगमेंट अब
BundleSavedStateRegistryOwner
लागू करता है और यह हाल ही में रिलीज़ हुई SavedState लाइब्रेरी [aosp/824380] पर निर्भर करता है by activityViewModels
Kotlin प्रॉपर्टी डेलिगेट जोड़ा गया है, ताकि उसमें मौजूद गतिविधि से जुड़े ViewModels को वापस लाया जा सके [b/119050253]by viewModels
Kotlin प्रॉपर्टी डेलिगेट को बड़ा किया गया है, ताकिViewModelStoreOwner
पाने के लिए वैकल्पिक लैंब्डा तरीका अपनाया जा सके. इससे, आपकोval viewModel: MyViewModel by viewModels(::requireParentFragment)
[b/119050253] जैसे कोड के साथ पैरंट फ़्रैगमेंट या अन्य कस्टमViewModelStoreOwner
को पास करने की अनुमति मिलती है
एपीआई में किए गए बदलाव
FragmentScenario
की मदद से, अब कोई थीम चुनी जा सकती है. जैसे,Theme.AppCompat
[b/119054431]. यह बदलाव, डेटा को ऐक्सेस करने के तरीके में हुआ है.requireView()
का एक ऐसा तरीका जोड़ा गया है जो@NonNull View
दिखाता है याIllegalStateException
दिखाता है [b/120241368]- ऐसा
requireParentFragment()
तरीका जोड़ा गया है जो@NonNull Fragment
दिखाता है याIllegalStateException
[b/112103783] दिखाता है
गड़बड़ियां ठीक की गईं
- IllegalStateException को ठीक किया गया: स्टेटस b/120814739 सेव नहीं हो सका
- सेव की गई इंस्टेंस स्थिति से वापस लाए जा रहे फ़्रैगमेंट को अब हमेशा शून्य नहीं वाला
Bundle
[b/119794496] मिलेगा - हटाए गए फ़्रैगमेंट को फिर से जोड़ने पर, वे अपने
Lifecycle
ऑब्जेक्ट का फिर से इस्तेमाल नहीं करते [b/118880674]
वर्शन 1.1.0-alpha02
3 दिसंबर, 2018
नई सुविधाएं
- फ़्रैगमेंट सिनेमैटिक के Kotlin एक्सटेंशन की मदद से, अब
FragmentFactory
इंस्टेंस में पास करने के विकल्प के तौर पर, फ़्रैगमेंट कंस्ट्रक्शन के लिए लैम्डा का इस्तेमाल किया जा सकता है. (aosp/812913)
गड़बड़ियां ठीक की गईं
- बैक स्टैक पर नेस्ट किए गए फ़्रैगमेंट का इस्तेमाल करते समय, IllegalStateException को ठीक किया गया (b/119256498)
FragmentFactory
(aosp/820540) के साथFragmentScenario.recreate()
का इस्तेमाल करने पर होने वाले क्रैश को ठीक किया गया- फ़्रैगमेंट को हटाए जाने के बाद, टारगेट फ़्रैगमेंट को ऐक्सेस न करने की समस्या को ठीक किया गया है (aosp/807634)
वर्शन 1.1.0-alpha01
5 नवंबर, 2018
यह fragment-testing
आर्टफ़ैक्ट और FragmentScenario
की पहली रिलीज़ है. इसे androidx.test:core API के आधार पर बनाया गया है. ज़्यादा जानकारी के लिए, फ़्रैगमेंट टेस्टिंग दस्तावेज़ देखें.
नई सुविधाएं
- अलग-अलग फ़्रैगमेंट की जांच करने के लिए, नई FragmentScenario क्लास.
- अब किसी भी
FragmentManager
परFragmentFactory
सेट करके यह कंट्रोल किया जा सकता है कि फ़्रैगमेंट के नए इंस्टेंस कैसे इंस्टैंशिएट किए जाएं. - फ़्रैगमेंट से ViewModels को वापस पाने के लिए, एक नई
by viewModels()
Kotlin प्रॉपर्टी डेलिगेट जोड़ी गई है. - फ़्रैगमेंट के
onStop()
में ऐसे इनपुट इवेंट रद्द कर दिए गए हैं जिन्हें मंज़ूरी मिलना बाकी है, जैसे कि क्लिक.
एपीआई में किए गए बदलाव
- Fragment API के पूरे प्लैटफ़ॉर्म पर, वैल्यू न होने की जानकारी देने वाले एनोटेशन का दायरा काफ़ी बढ़ाया गया है.
गड़बड़ियां ठीक की गईं
- एक समस्या को ठीक किया गया, जिसकी वजह से LiveData में फ़्रैगमेंट के ऑपरेशन काम नहीं कर रहे थे (b/77944637)
आम तौर पर होने वाली समस्याएं
- FragmentManager से किसी फ़्रैगमेंट को हटाने के बाद, टारगेट फ़्रैगमेंट को ऐक्सेस नहीं किया जा सकता.
fragment-testing
, सहीandroidx.test:core:1.0.0
के बजायandroidx.test:core:1.0.0-beta01
पर निर्भर करता है.