फ़्रैगमेंट
नया अपडेट | स्टेबल रिलीज़ | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
---|---|---|---|---|
4 सितंबर, 2024 | 1.8.3 | - | - | - |
डिपेंडेंसी तय करना
फ़्रैगमेंट पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट. Google की Maven रिपॉज़िटरी पढ़ें हमारा वीडियो देखें.
उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको build.gradle
फ़ाइल में ज़रूरत है
आपका ऐप्लिकेशन या मॉड्यूल:
ग्रूवी
dependencies { def fragment_version = "1.8.3" // Java language implementation implementation "androidx.fragment:fragment:$fragment_version" // Kotlin implementation "androidx.fragment:fragment-ktx:$fragment_version" // Compose implementation "androidx.fragment:fragment-compose:$fragment_version" // Testing Fragments in Isolation debugImplementation "androidx.fragment:fragment-testing-manifest:$fragment_version" androidTestImplementation "androidx.fragment:fragment-testing:$fragment_version" }
Kotlin
dependencies { val fragment_version = "1.8.3" // Java language implementation implementation("androidx.fragment:fragment:$fragment_version") // Kotlin implementation("androidx.fragment:fragment-ktx:$fragment_version") // Compose implementation("androidx.fragment:fragment-compose:$fragment_version") // Testing Fragments in Isolation debugImplementation("androidx.fragment:fragment-testing:$fragment_version") }
डिपेंडेंसी के बारे में ज़्यादा जानकारी के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.
सुझाव
आपके सुझाव, शिकायत या राय से Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको नई समस्याओं का पता चलता है या आपको इस लाइब्रेरी को बेहतर बनाने के लिए आइडिया मिल सकते हैं. कृपया, इस मौजूदा समस्याएं इस लाइब्रेरी में जोड़ें. किसी मौजूदा समस्या के लिए अपना वोट दें. इसके लिए ये तरीके अपनाएं: स्टार बटन पर क्लिक करके ऐसा किया जा सकता है.
समस्या को ट्रैक करने वाले टूल से जुड़ा दस्तावेज़ देखें हमारा वीडियो देखें.
वर्शन 1.8
वर्शन 1.8.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
. अब यह एपीआई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
है, जो फ़्रैगमेंट क्लास के नाम की मदद से, कंपोज़ की हैरारकी में फ़्रैगमेंट जोड़ने की अनुमति देता है. यह फ़्रैगमेंट की स्थिति को सेव और वापस लाने का काम अपने-आप मैनेज करता है. इसका इस्तेमाल किसी फ़्रैगमेंट को बढ़ाने के लिए,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
, फ़्रैगमेंट क्लास नाम के ज़रिए कंपोज़ की हैरारकी में फ़्रैगमेंट जोड़ने की अनुमति देता है. यह फ़्रैगमेंट की स्थिति को सेव और वापस लाने का काम अपने-आप मैनेज करता है. इसका इस्तेमाल AndroidViewBindingComposable
की जगह सीधे तौर पर किया जा सकता है.Composable
.(b/312895363, Icf841)
दस्तावेज़ों में हुए बदलाव
OnBackStackChangedListener
API के दस्तावेज़ अपडेट किए गए, ताकि यह बताया जा सके कि उन्हें कब कॉल किया जाए और उनका इस्तेमाल कैसे किया जाए. (I0bfd9)
डिपेंडेंसी अपडेट
- फ़्रैगमेंट अब प्रोफ़ाइल इंस्टॉलर 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 |
नहीं |
ट्रांज़िशन 1.4.1 या इससे कम वर्शन वाला AndroidX Transition |
R.transition |
नहीं |
ट्रांज़िशन 1.5.0 के साथ AndroidX Transition |
R.transition |
हां |
अनुमानित बैक जेस्चर का इस्तेमाल करने के बाद, अगर आपको फ़्रैगमेंट में अनुमानित बैक अप सहायता से जुड़ी कोई समस्या दिखती है, तो कृपया किसी सैंपल प्रोजेक्ट की मदद से फ़्रैगमेंट के लिए समस्या दर्ज करें. यह प्रोजेक्ट आपकी समस्या के बारे में जानकारी देता है. अपनी गतिविधि के onCreate()
में मौजूद FragmentManager.enabledPredictiveBack(false)
का इस्तेमाल करके, अनुमानित जानकारी को फिर से बंद किया जा सकता है.
FragmentManager.OnBackStackChangedListener()
, अब इवेंट के अनुमानित प्रोग्रेस और रद्द किए गए इवेंट के सुझाव पाने के लिए, onBackStackChangeProgressed()
और onBackStackChangeCancelled()
का इस्तेमाल करता है.
फ़्रैगमेंट कंपोज़ आर्टफ़ैक्ट
एक नया fragment-compose
आर्टफ़ैक्ट बनाया गया है, जो ऐसे ऐप्लिकेशन पर फ़ोकस करता है जो फ़्रैगमेंट पर आधारित आर्किटेक्चर से पूरी तरह से कंपोज़ पर आधारित आर्किटेक्चर पर जाने की प्रोसेस में हैं.
इस नए आर्टफ़ैक्ट में पहली सुविधा, Fragment
पर content
एक्सटेंशन का तरीका उपलब्ध है. इसका मकसद आपके लिए 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 ट्रांज़िशन के लिए फ़्रैगमेंट के 'पेरिक्टिव बैक' सुविधा का इस्तेमाल किया जा रहा है. अगरaddOnBackStackChangedListener
के ज़रिए अब तक कोईFragmentManager.OnBackStackChangedListener
नहीं जोड़ा गया है, तो फ़्रैगमेंटhandleOnBackProgressed
सेNullPointerException
देंगे. (I7c835)
वर्शन 1.7.0-alpha09
24 जनवरी, 2024
androidx.fragment:fragment-*:1.7.0-alpha09
रिलीज़ हो गया है. वर्शन 1.7.0-alpha09 में ये कमिट हैं.
फ़्रैगमेंट कंपोज़ आर्टफ़ैक्ट
एक नया fragment-compose
आर्टफ़ैक्ट बनाया गया है, जो ऐसे ऐप्लिकेशन पर फ़ोकस करता है जो फ़्रैगमेंट पर आधारित आर्किटेक्चर से पूरी तरह से कंपोज़ पर आधारित आर्किटेक्चर पर जाने की प्रोसेस में हैं.
इस नए आर्टफ़ैक्ट में पहली सुविधा, Fragment
पर content
एक्सटेंशन का तरीका उपलब्ध है. इसका मकसद आपके लिए 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/बाहर निकलने का ट्रांज़िशन सेट न कर पाने की वजह से,
NullPointerException
को ठीक किया गया. (I8472b) - फ़्रैगमेंट
1.6.2
से: जबFragmentContainerView
का फ़्रैगमेंट इनफ़्लेट होता है, तो इसकेFragmentManager
, होस्ट, और आईडी जैसी स्थितियों को अबonInflate
कॉलबैक में ऐक्सेस किया जा सकता है. (I1e44c, b/307427423) - फ़्रैगमेंट
1.6.2
से: फ़्रैगमेंट के सेट को हटाने के लिएclearBackStack
का इस्तेमाल करते समय, पैरंट फ़्रैगमेंट काViewModels
हटाने पर, नेस्ट किए गए किसी भी फ़्रैगमेंट केViewModel
को हटा दिया जाएगा. (I6d83c, b/296173018)
वर्शन 1.7.0-alpha06
4 अक्टूबर, 2023
androidx.fragment:fragment-*:1.7.0-alpha06
रिलीज़ हो गया है. वर्शन 1.7.0-alpha06 में ये कमिट हैं.
डिपेंडेंसी अपडेट
- ट्रांज़िशन
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 में ये कमियां हैं.
गड़बड़ियां ठीक की गईं
- प्रेडिक्टिव बैक का इस्तेमाल करते समय फ़्रैगमेंट से जुड़ी उस समस्या को ठीक किया गया है जिसकी वजह से फ़्रैगमेंट मैनेजर के बैक स्टैक का पहला फ़्रैगमेंट छोड़ दिया गया था. साथ ही, 3 बटन वाले नेविगेशन या अनुमानित बैक जेस्चर के ज़रिए सिस्टम का इस्तेमाल करते समय गतिविधि खत्म होने वाली थी. (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)
डिपेंडेंसी अपडेट
- फ़्रैगमेंट अब गतिविधि 1.7.2 पर निर्भर करता है. यह उस समस्या को ठीक कर देता है जिसकी वजह से Kotlin के उपयोगकर्ता, गतिविधि पर साफ़ तौर पर डिपेंडेंसी के बिना
ComponentDialog
को बढ़ा नहीं सकते. (b/287509323)
वर्शन 1.6.0
7 जून, 2023
androidx.fragment:fragment-*:1.6.0
रिलीज़ हो गया है. वर्शन 1.6.0 में ये कमियां शामिल हैं.
1.5.0 के बाद के अहम बदलाव
Fragment
के सेव किए गए स्टेटस को निजी लाइब्रेरी की स्थिति (कस्टमParcelable
क्लास) और डेवलपर की दी गई स्थिति के बीच बांट दिया गया है. इसे अब हमेशाBundle
में सेव किया जाता है. इससे यह तय किया जा सकता है कि फ़्रैगमेंट की स्थिति कहां से शुरू हो रही है.FragmentManager.OnBackStackChangedListener
इंटरफ़ेस कोonBackStackChangeStarted
औरonBackStackChangeCommitted
के दो अतिरिक्त कॉलबैक के साथ बड़ा किया गया है. इन्हें हरFragment
के साथ, फ़्रैगमेंट बैक स्टैक में जोड़े जाने या हटाने से ठीक पहले और लेन-देन के पूरा होने के बाद कॉल किया जाता है.FragmentStrictMode
ने नयाWrongNestedHierarchyViolation
जोड़ा है, जो यह पता लगाता है कि कोई चाइल्ड फ़्रैगमेंट कब उसके पैरंट के व्यू हैरारकी में नेस्ट किया गया है, लेकिन उसे पैरंट कीchildFragmentManager
में नहीं जोड़ा गया.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
से: समस्या ठीक की गई है, अगरLifecycle
पहले सेSTARTED
था और नतीजा पहले से उपलब्ध था, तोsetFragmentResultListener
मेंclearFragmentResultListener
को कॉल करने की सुविधा काम नहीं करेगी. (If7458)
डिपेंडेंसी से जुड़े अपडेट
- फ़्रैगमेंट अब लाइफ़साइकल
2.6.1
पर निर्भर करता है. (586fe7) - फ़्रैगमेंट अब SavedState
1.2.1
पर निर्भर करता है. (078e4e) - फ़्रैगमेंट अब ProfileInstaller
1.3.0
पर निर्भर करता है. (3fc05b)
वर्शन 1.6.0-alpha07
8 मार्च, 2023
androidx.fragment:fragment-*:1.6.0-alpha07
रिलीज़ हो गया है. वर्शन 1.6.0-alpha07 में ये कमिट हैं.
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट
1.5.6
से: उस समस्या को ठीक किया गया है जहां किसी भी फ़्रैगमेंट को हटाने पर, गतिविधि का मेन्यू अमान्य हो जाएगा. भले ही, उसने मेन्यू आइटम जोड़े हों या नहीं. (50f098, b/244336571)
वर्शन 1.6.0-alpha06
22 फ़रवरी, 2023
androidx.fragment:fragment-*:1.6.0-alpha06
रिलीज़ हो गया है. वर्शन 1.6.0-alpha06 में ये कमिट हैं.
व्यवहार में बदलाव
- फ़्रैगमेंट को उनकी टारगेट की गई स्थितियों में ले जाने से पहले,
FragmentManager
केonBackStackChangedListener
पर नयाonBackStackChangedStarted
कॉलबैक लागू होगा. (I34726)
वर्शन 1.6.0-alpha05
8 फ़रवरी, 2023
androidx.fragment:fragment-*:1.6.0-alpha05
रिलीज़ हो गया है. वर्शन 1.6.0-alpha05 में ये कमियां हैं.
नई सुविधाएं
FragmentManager.OnBackStackChagnedListener
इंटरफ़ेस में अब दो अतिरिक्त कॉलबैक,onBackStackChangeStarted
औरonBackStackChangeCommitted
उपलब्ध हैं. इनकी मदद से, ज़्यादा जानकारी पाई जा सकती है. साथ ही,FragmentManager
में बैक स्टैक में बदलाव होने पर उन्हें कंट्रोल किया जा सकता है. (Ib7ce5, b/238686802)
एपीआई में किए गए बदलाव
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
के सेव किए गए स्टेटस को निजी लाइब्रेरी की स्थिति (कस्टमParcelable
क्लास) और डेवलपर की दी गई स्थिति के बीच बांट दिया गया है. इसे अब हमेशाBundle
में सेव किया जाता है. इससे यह तय किया जा सकता है कि फ़्रैगमेंट की स्थिति कहां से शुरू हो रही है. (b/207158202)
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट
1.5.1
से:DialogFragmentCallbacksDetector
में रिग्रेशन से जुड़ी समस्या ठीक करें, जहां एजीपी 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)
- उस समस्या को ठीक कर दिया गया है जहां
clearFragmentResultListener
कोsetFragmentResultListener
में कॉल करने की सुविधा काम नहीं करती, अगर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 में ये कमिट हैं.
गड़बड़ियां ठीक की गईं
- उस गड़बड़ी को ठीक किया गया है जहां सेवा देने वाले के कॉलबैक इंटरफ़ेस (
OnConfigurationChangedProvider
,OnMultiWindowModeChangedProvider
,OnTrimMemoryProvider
,OnPictureInPictureModeChangedProvider
) को लागू नहीं करने वाले होस्ट के साथ, पसंद के मुताबिकFragmentController
का इस्तेमाल करने पर, चाइल्ड फ़्रैगमेंट को डिस्पैच नहीं किया जा सका. (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
में रिग्रेशन की समस्या ठीक करें, जहां एजीपी 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)- फ़्रैगमेंट नतीजे के एपीआई से सेट किए गए ऐसे नतीजे जो अब तक डिलीवर नहीं हुए हैं उन्हें अब
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()
कोCreationExtras
पास कर सकते हैं औरby activityViewModels()
फ़ंक्शन. (Ibefe7, b/217601110)
व्यवहार में बदलाव
DialogFragment
अबComponentDialog
को डिफ़ॉल्ट के तौर पर इस्तेमाल करता हैonCreateDialog()
ने डायलॉग दिखाया. (If3784, b/217618170)
वर्शन 1.5.0-alpha02
9 फ़रवरी, 2022
androidx.fragment:fragment:1.5.0-alpha02
, androidx.fragment:fragment-ktx:1.5.0-alpha02
, और androidx.fragment:fragment-testing:1.5.0-alpha02
रिलीज़ हुए हैं. वर्शन 1.5.0-alpha02 में ये कमियां हैं.
नई सुविधाएं
FragmentStrictMode
अब क्लास के नाम के साथallowViolation()
का इस्तेमाल करके, तीसरे पक्ष के निजी फ़्रैगमेंट को उल्लंघन के खास दंड से बचने की सुविधा देता है. (I8f678)
वर्शन 1.5.0-alpha01
26 जनवरी, 2022
androidx.fragment:fragment:1.5.0-alpha01
, androidx.fragment:fragment-ktx:1.5.0-alpha01
, और androidx.fragment:fragment-testing:1.5.0-alpha01
रिलीज़ हुए हैं. वर्शन 1.5.0-alpha01 में ये कमियां हैं.
नई सुविधाएं
Fragment
अब ViewModel CreationExtras के साथ इंटिग्रेट हो जाता है, जिसे लाइफ़साइकल2.5.0-alpha01
के हिस्से के तौर पर पेश किया गया है. (I3060b, b/207012585)
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट
1.4.1
से:FragmentContainerView
पर अब कोई गैर-कानूनी स्थिति नहीं मिलती है अपवाद के तौर पर, जब xml से जनरेट किए गए व्यू आईडी में नेगेटिव मान होते हैं. (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
अब गैर-कानूनी राज्य नहीं देता है अपवाद के तौर पर, जब xml से जनरेट किए गए व्यू आईडी में नेगेटिव मान होते हैं. (Ic185b, b/213086140)by viewModels()
लेज़ी फ़ंक्शन के साथ, पसंद के मुताबिकownerProducer
लैम्डा का इस्तेमाल करते समय, यह उस मालिक केdefaultViewModelProviderFactory
का इस्तेमाल करेगा फ़्रैगमेंट के हमेशा इस्तेमाल होने के बजाय,ViewModelProvider.Factory
उपलब्ध नहीं कराया जाता है फ़ैक्ट्री में किया गया था. (I56170, b/214106513)
वर्शन 1.4.0
17 नवंबर, 2021
androidx.fragment:fragment:1.4.0
, androidx.fragment:fragment-ktx:1.4.0
, और androidx.fragment:fragment-testing:1.4.0
रिलीज़ हुए हैं. वर्शन 1.4.0 में ये कमियां शामिल हैं.
1.3.0 के बाद से हुए अहम बदलाव
FragmentStrictMode
एपीआई में रनटाइम की जांच की सुविधा मिलती है. इससे यह पुष्टि की जा सकती है कि आपका ऐप्लिकेशन या लाइब्रेरी, काम नहीं करने वाले फ़्रैगमेंट एपीआई को कॉल नहीं कर रही हैं. उल्लंघन का पता चलने पर, आपके पास लॉग मैसेज को प्रिंट करने, कस्टम लिसनर को ट्रिगर करने या अपने ऐप्लिकेशन को क्रैश करने का विकल्प होता है.setStrictModePolicy()
के नए तरीके से,FragmentManager
पर सेट की जा सकती है कि किसFragmentStrictMode.Policy
की मदद से यह तय किया जा सकता है कि कौनसी जांच चालू की गई हैं और कौनसी “पेनल्टी” ट्रिगर हुई हैं. यह नीति उस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
को फ़्रैगमेंट 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
अब इस्तेमाल करता है सभी लेन-देन के लिएsetReorderingAllowed(true)
यहshow()
,showNow()
को कॉल करने पर बनाया गया है, याdismiss()
. (Ie2c14)DetachAndAttachFragmentInSameFragmentTransaction
की बहुत लंबी लिंट चेतावनी को कम करकेDetachAndAttachSameFragment
कर दिया गया है. (e9eca3)
वर्शन 1.4.0-alpha10
29 सितंबर, 2021
androidx.fragment:fragment:1.4.0-alpha10
, androidx.fragment:fragment-ktx:1.4.0-alpha10
, और androidx.fragment:fragment-testing:1.4.0-alpha10
रिलीज़ हुए हैं. वर्शन 1.4.0-alpha10 में ये कमियां हैं.
लिंट
- एक ही
FragmentTransaction
में एक हीFragment
परdetach()
औरattach()
, दोनों को कॉल करने का पता लगाने के लिएDetachAndAttachFragmentInSameFragmentTransaction
लिंट चेतावनी जोड़ी गई - क्योंकि एक ही लेन-देन में ये पूरक कार्रवाइयां एक-दूसरे को रद्द कर देती हैं, इसलिए इन्हें अलग-अलग लेन-देन में बांटा जाना चाहिए, ताकि असल में कुछ भी किया जा सके. (aosp/1832956, b/200867930) MenuHost
केaddMenuProvider
एपीआई का इस्तेमाल करते समय, फ़्रैगमेंट व्यू लाइफ़साइकल में फ़्रैगमेंट व्यू लाइफ़साइकल मेंFragmentAddMenuProvider
लिंट गड़बड़ी जोड़ी गई. (aosp/1830457, b/200326272)
दस्तावेज़ से जुड़े अपडेट
- एपीआई बंद करने के मैसेज को ज़्यादा जानकारी के साथ बड़ा कर दिया गया है. फ़िलहाल, इसे
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 में ये कमियां हैं.
नई सुविधाएं
- अब
clearBackStack(name)
को कॉल किया जा सकता हैsaveBackStack(name)
में पहले से सेव किए गए स्टेटस को मिटाएं. (I70cd7)
एपीआई में किए गए बदलाव
FragmentContainerView
क्लास को Kotlin में फिर से लिखा गया है यह पक्का करना किgetFragment
फ़ंक्शन सही तरीके से काम करेगा अमान्य है. (If694a, b/189629145)- फ़्रैगमेंट सख्त मोड को अब 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
लिंट चेक को बेहतर बनाया गया. (I2d865) - अतिरिक्त किनारे के केस को मैनेज करने के लिए,
UseGetLayoutInflater
लिंट चेक को बेहतर बनाया गया. (Ie5423)
वर्शन 1.4.0-alpha07
18 अगस्त, 2021
androidx.fragment:fragment:1.4.0-alpha07
, androidx.fragment:fragment-ktx:1.4.0-alpha07
, और androidx.fragment:fragment-testing:1.4.0-alpha07
रिलीज़ हुए हैं. इनमें कोई खास बदलाव नहीं हुआ है. वर्शन 1.4.0-alpha07 में ये कमिट हैं.
वर्शन 1.4.0-alpha06
4 अगस्त, 2021
androidx.fragment:fragment:1.4.0-alpha06
, androidx.fragment:fragment-ktx:1.4.0-alpha06
, और androidx.fragment:fragment-testing:1.4.0-alpha06
रिलीज़ हुए हैं. वर्शन 1.4.0-alpha06 में ये कमियां हैं.
गड़बड़ियां ठीक की गईं
- एक से ज़्यादा बैक अप से जुड़ी समस्या को ठीक किया गया
बैक स्टैक के बीच तेज़ी से स्वैप करने पर स्टैक
जो
IllegalStateException
के तौर पर दिखेगाFragmentTransaction
या दिखने वाले फ़्रैगमेंट की दूसरी कॉपी मिलेगी. (I9039f) - उस समस्या को ठीक किया गया जिसकी वजह से
FragmentManager
पहले से सेव की गई स्थिति की कॉपी बनेगीsaveBackStack()
के ज़रिए, भले ही उस राज्य में यह पुनर्स्थापित. (Ied212) dismissAllowingStateLoss()
तरीका आपके कॉल करने परDialogFragment
में सेDialogFragment
क्रैश नहीं होता विशेष रूप से जोड़ते समय स्थिति को सेव करने के बाद Dialogफ़्रैगमेंट को,show(FragmentTransaction, String)
तरीका. (I84422)
वर्शन 1.4.0-alpha05
21 जुलाई, 2021
androidx.fragment:fragment:1.4.0-alpha05
, androidx.fragment:fragment-ktx:1.4.0-alpha05
, और androidx.fragment:fragment-testing:1.4.0-alpha05
रिलीज़ हुए हैं. वर्शन 1.4.0-alpha05 में ये कमियां हैं.
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट
1.3.6
से: रूट व्यू मेंtransitionGroup=”true”
सेट होने पर,hide()
का इस्तेमाल करते समय फ़्रैगमेंट का व्यू अबGONE
पर सही तरीके से सेट हो गया है. (aosp/1766655, b/193603427) - फ़्रैगमेंट
1.3.6
से:FragmentActivity
अब हमेशा अनलॉक होता है लाइफ़साइकल में पहली कार्रवाई के तौर पर सेव की गई स्थिति कॉलबैक करता है, तो यह ओवरराइड हो जाता है. (I6db7a)
डिपेंडेंसी अपडेट
- फ़्रैगमेंट
1.3.6
से: फ़्रैगमेंट अब गतिविधि1.2.4
(I3a66c) पर निर्भर करते हैं
वर्शन 1.4.0-alpha04
30 जून, 2021
androidx.fragment:fragment:1.4.0-alpha04
, androidx.fragment:fragment-ktx:1.4.0-alpha04
, और androidx.fragment:fragment-testing:1.4.0-alpha04
रिलीज़ हुए हैं. वर्शन 1.4.0-alpha04 में ये कमियां हैं.
एपीआई में किए गए बदलाव
FragmentManager
अब अपने राज्य को सेव करने के लिए,SavedStateRegistry
का इस्तेमाल हुड के तहत करता है.FragmentController
मेंsaveAllState()
औरrestoreSavedState()
के तरीकों का इस्तेमाल भी बंद कर दिया गया है. अगर आपFragmentActivity
के बाहर फ़्रैगमेंट होस्ट करने के लिएFragmentController
का इस्तेमाल कर रहे हैं, तो आपके पास अपनेFragmentHostCallbacks
को लागू करना चाहिएSavedStateRegistryOwner
. (Iba68e, b/188734238)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक कर दिया गया है जिसकी मदद से
कई बैक सपोर्ट के लिए
saveBackStack()
एक ही समय में किए जाने पर स्टैक विफल हो जाएगाFragmentTransaction
को चलाया जा रहा है, जिसमेंreplace()
का इस्तेमाल हुआ. (I73137) - उस
NullPointerException
को ठीक किया गया सेव की गई किसी फ़ाइल को मैन्युअल तरीके से वापस लाने के बाद होता है पिछली गतिविधियों का स्टैक, जिनमें कई लेन-देन शामिल हैं इसके लिएrestoreBackStack()
API का इस्तेमाल करते समय एक से ज़्यादा बैक स्टैक की सुविधा मिलती है. यह समस्या भी ठीक हो गई है एक समस्या जिसकी वजह सेsetReorderingAllowed(true)
सभी लेन-देन की जांच नहीं की जा रही थी. (I8c593) - उस समस्या को ठीक किया गया है जिसकी वजह से
FragmentManager
पहले से सेव की गई स्थिति को गलत तरीके से वापस लाना फ़्रैगमेंट को हटाए जाने के बाद भीFragmentManager
से निकलने वाली वैल्यू से, लगातार विकास कर सकते हैं. (I1fb8e)
वर्शन 1.4.0-alpha03
16 जून, 2021
androidx.fragment:fragment:1.4.0-alpha03
, androidx.fragment:fragment-ktx:1.4.0-alpha03
, और androidx.fragment:fragment-testing:1.4.0-alpha03
रिलीज़ हुए हैं. वर्शन 1.4.0-alpha03 में ये कमियां हैं.
नई सुविधाएं
- सभी फ़्रैगमेंट 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
s नहीं देंगे. (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()
की तरह, अगर आपने पहले saveBackStack()
को इसी नाम से कॉल नहीं किया है, तो restoreBackStack()
कुछ नहीं करता है. (b/80029773)
फ़्रैगमेंट स्ट्रिक्टमोड
FragmentStrictMode
एपीआई में रनटाइम की जांच की सुविधा मिलती है. इससे यह पुष्टि की जा सकती है कि आपका ऐप्लिकेशन या लाइब्रेरी, काम नहीं करने वाले फ़्रैगमेंट एपीआई को कॉल नहीं कर रही हैं. उल्लंघन का पता चलने पर, आपके पास लॉग मैसेज को प्रिंट करने, कस्टम लिसनर को ट्रिगर करने या अपने ऐप्लिकेशन को क्रैश करने का विकल्प होता है. setStrictModePolicy()
के नए तरीके से, FragmentManager
पर सेट की जा सकती है कि किस FragmentStrictMode.Policy
की मदद से यह तय किया जा सकता है कि कौनसी जांच चालू की गई हैं और कौनसी “पेनल्टी” ट्रिगर हुई हैं. यह नीति उस 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)
नई लिंट जांच
UseGetLayoutInflater
लिंट चेक, अबDialogFragment
मेंLayoutInflater.from(Context)
का इस्तेमाल करने पर चेतावनी देता है - आपकोLayoutInflater
के लिए सही वैल्यू पाने के लिए, हमेशा डायलॉग फ़्रैगमेंट केgetLayoutInflater()
तरीके का इस्तेमाल करना चाहिए. (#156, b/170781346)DialogFragmentCallbacksDetector
लिंट चेक अबDialogFragment
केonCreateDialog()
तरीके सेsetOnCancelListener
याsetOnDismissListener
को कॉल करने पर चेतावनी देता है - इन लिसनर का मालिकाना हकDialogFragment
के पास है और इन कॉलबैक को पाने के लिए आपकोonCancel()
औरonDismiss()
को बदलना होगा. (#171, b/181780047, b/187524311)
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट 1.3.4 से:
ViewModelProvider
के साथViewTreeViewModelStoreOwner.get()
एपीआई या फ़्रैगमेंट मेंviewModel()
के Jetpack Compose तरीके का इस्तेमाल करने पर, फ़्रैगमेंट1.3.3
में बताए गए रिग्रेशन को ठीक किया गया. अगर आपका फ़्रैगमेंट,getDefaultViewModelProviderFactory()
को बदल देता है, तो इस्तेमाल के ये उदाहरण अब सही तरीके से आपके फ़्रैगमेंट से मिलेViewModelProvider.Factory
का इस्तेमाल करते हैं. ऐसा इसलिए, क्योंकि@AndroidEntryPoint
जानकारी वाले फ़्रैगमेंट, Hilt का इस्तेमाल करते समय ऐसा करते हैं. अगर इस तरीके को नहीं बदला जाता है, तो फ़्रैगमेंट के व्यू के साथ-साथ अपनी स्थिति को सेव करने और पहले जैसा करने वालाSavedStateViewModelFactory
डिफ़ॉल्ट फ़ैक्ट्री के तौर पर बन जाता है. (I5cbfa, b/186097368) - फ़्रैगमेंट 1.3.4 से: एपीआई 29 पर
FragmentContainerView
का इस्तेमाल करते समय, इनसेट ये काम नहीं करेंगेBottomNavigationBar
औरFloatingActionButton
इंस्टेंस की समस्याओं को ठीक करते हुए, अनिश्चित समय तक भेजें. (I1bb78, b/186012452) - फ़्रैगमेंट 1.3.4 से: अब फ़्रैगमेंट नतीजे से, पार्स किया जा सकने वाला अपना डेटा वापस लाया जा सकता है प्रक्रिया पूरी होने के बाद का बंडल. (I65932, b/187443158)
- फ़्रैगमेंट 1.3.4 से: किसी ViewGroup पर शेयर किए गए एलिमेंट का ट्रांज़िशन करते समय, अगर
ViewGroup में
transitionGroup
को 'गलत' पर सेट किया गया है, अब यह ठीक से काम करेगा ट्रांज़िशन है. (I99675)
बाहरी योगदान
FragmentScenario
कोCloseable
लागू करने में मदद करने के लिए, simonchiller का धन्यवाद. (#121, b/143774122)- इस रिलीज़ में पूरा
FragmentStrictMode
एपीआई जोड़ने के लिए, simonschiller का धन्यवाद! 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
s नहीं देंगे. (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()
एपीआई का इस्तेमाल करने पर फ़्रैगमेंट1.3.3
में आए रिग्रेशन या Hilt का इस्तेमाल करते समय फ़्रैगमेंट मेंviewModel()
का Jetpack Compose तरीका इस्तेमाल करने पर, इस गड़बड़ी को ठीक किया गया है. अगर यह फ़्रैगमेंटgetDefaultViewModelProviderFactory()
को ओवरराइड करता है, तो इस्तेमाल के ये उदाहरण अब आपके फ़्रैगमेंट से मिलेViewModelProvider.Factory
का सही तरीके से इस्तेमाल करते हैं (जैसा कि@AndroidEntryPoint
व्याख्या किए गए फ़्रैगमेंट करते हैं). अगर इस तरीके को नहीं बदला जाता है, तो फ़्रैगमेंट के व्यू के साथ-साथ अपनी स्थिति को सेव करने और पहले जैसा करने वालाSavedStateViewModelFactory
डिफ़ॉल्ट फ़ैक्ट्री के तौर पर बन जाता है. (I5cbfa, b/186097368)- एपीआई 29 पर
FragmentContainerView
का इस्तेमाल करते समय, इनसेट ये काम नहीं करेंगेBottomNavigationBar
औरFloatingActionButton
इंस्टेंस की समस्याओं को ठीक करते हुए, अनिश्चित समय तक भेजें. (I1bb78, b/186012452) - अब आप फ़्रैगमेंट नतीजे से पार्स किया जा सकने वाला अपना डेटा वापस पा सकते हैं प्रक्रिया पूरी होने के बाद का बंडल. (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
के साथ इस्तेमाल किया जाता है, तोViewTreeSavedStateRegistryOwner.get()
का इस्तेमाल फ़्रैगमेंट का व्यू. (I21acf, b/181577191)
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट
1.3.2
में पेश किए गए रिग्रेशन वाले रिग्रेशन को ठीक किया गया है. इसकी वजह से,FragmentTransaction
पॉप-अप होने परpopEnter
ऐनिमेशन नहीं चलेंगे, जैसे किsetPrimaryNavFragment
ऑपरेशन शामिल होने पर, जैसे किNavHostFragment
के हिसाब से इस्तेमाल की जाने वाली कार्रवाई. (I38c87, b/183877426) - अब
FragmentContainerView
पक्का करता है कि हरFragment
कोWindowInsets
, यह पक्का करना कि हर फ़्रैगमेंट अब इनसेट का अलग से इस्तेमाल कर सके. (I63f68, b/172153900) DialogFragment
अब उन मामलों को सही तरीके से हैंडल करता है जिनमें चाइल्ड फ़्रैगमेंट को ऐसे कंटेनर में जोड़ा गया है जिसका आईडी आपकी कस्टमDialog
क्लास के कंटेनर के आईडी से मेल खाता है. इससेBottomSheetDialog
जैसे डायलॉग के अंदर इस्तेमाल होने वाले आईडी का दोबारा इस्तेमाल करते समय, व्यू हैरारकी (व्यू और व्यू ग्रुप के लेआउट का क्रम) से जुड़ी समस्याओं को ठीक किया जाता है. (Ie6279, b/180021387)FragmentManager.dump()
अब सक्रिय फ़्रैगमेंट की सूची के पहले फ़्रैगमेंट को सही तरीके से इंडेंट करता है. (If5c33, b/183705451)
नए स्टेट मैनेजर की गड़बड़ियां ठीक की गईं
- नया फ़्रैगमेंट स्टेट मैनेजर अब सही तरीके से एग्ज़िट को हैंडल करता है छुपाने की कार्रवाइयों वाले ट्रांज़िशन. (I9e4de, b/184830265)
वर्शन 1.3.2
24 मार्च, 2021
androidx.fragment:fragment:1.3.2
, androidx.fragment:fragment-ktx:1.3.2
, और androidx.fragment:fragment-testing:1.3.2
रिलीज़ हुए हैं. वर्शन 1.3.2 में ये कमियां शामिल हैं.
नए स्टेट मैनेजर की गड़बड़ियां ठीक की गईं
popBackStack()
औरcommit()
, दोनों कार्रवाइयां चलाते समय साथ में, पिछला ऑपरेशन अब सभी के लिए दिशा सेट करेगा कुछ पॉप ऐनिमेशन चलाने के बजाय ऐनिमेशन चलाएं और कुछ अन्य ऐनिमेशन. (I7072e, b/181142246)- शेयर किए गए एलिमेंट के क्रम में व्यू में अब ये चीज़ें नहीं होंगी शेयर किए गए एलिमेंट का ट्रांज़िशन करते समय, उनका ट्रांज़िशन नाम मिटा दिया गया है. (I4d4a6, b/179934757)
डिपेंडेंसी से जुड़े अपडेट
- फ़्रैगमेंट अब गतिविधि 1.2.2 पर निर्भर करता है. इसमें फ़्रैगमेंट 1.3.1 या इसके बाद के वर्शन का इस्तेमाल करते समय, गतिविधि की
InvalidFragmentVersionForActivityResult
लिंट जांच से जुड़ी समस्या को ठीक किया जाता है. - फ़्रैगमेंट अब लाइफ़साइकल 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
में मौजूद डायलॉग को अब ViewTree का ऐक्सेस मिल सकता है यह पक्का करना होगा किComposeView
के साथDialogFragment
का इस्तेमाल किया जा सकता है. (Ib9290, b/180691023)
गड़बड़ियां ठीक की गईं
- इसका इस्तेमाल करके, पहले से मौजूद
RESUMED
गतिविधि में फ़्रैगमेंट बढ़ाए गए कॉन्फ़िगरेशन के बाद, फ़्रैगमेंट कंटेनर व्यू को अब सही तरीके से दिखाया जाता है बदलें. (Ie14c8, b/180538371) - फ़्रैगमेंट के आखिर में अब कोई और
}
नहीं हैtoString()
(I54705, b/177761088) - फ़्रैगमेंट ऐक्टिविटी में ओवरराइड किए गए मेथड अब सही तरीके से बुनियादी तरीका javaDoc (I736ce, b/139548782)
setFragmentResult
औरsetFragmentResultListener
के दस्तावेज़ ने अपने पैरामीटर दस्तावेज़ अपडेट कर दिए हैं ताकि यह पता चल सके कि वे अब स्वीकार नहीं करते शून्य (I990ba, b/178348386)
नए स्टेट मैनेजर की गड़बड़ियां ठीक की गईं
mFocusedView
(Ib4e9e, b/179925887) की वजह से हुए फ़्रैगमेंट में मेमोरी लीक होने की समस्या को ठीक किया गया- फ़्रैगमेंट अब इनका इस्तेमाल करते समय
onCreateOptionsMenu
को सही तरीके से कॉल करते हैं लेन-देन दिखाएं/छिपाएं (I8bce8, b/180255554) - फ़्रैगमेंट के रखे जाने से पहले शुरू होने वाले ट्रांज़िशन वाले चाइल्ड फ़्रैगमेंट अब सही तरीके से पहुंच जाएंगे
RESUMED
(Ic11e6, b/180825150) <fragment>
टैग का इस्तेमाल करके बढ़ाए गए फ़्रैगमेंट अब हमेशाRESUMED
(I452ac, (I9fa49) तक पहुंचो
डिपेंडेंसी से जुड़े अपडेट
- फ़्रैगमेंट 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 में ये कमियां शामिल हैं.
01.2.0 से अब तक के बड़े बदलाव
- नया स्टेट मैनेजर:
FragmentManager
के इंटरनल रीराइट में, लाइफ़साइकल इवेंट, ऐनिमेशन, और ट्रांज़िशन से जुड़ी कई समस्याओं को हल किया गया है. साथ ही, टारे गए फ़्रैगमेंट को हैंडल करने के तरीके से जुड़ी समस्याएं हल की गई हैं. Activity नतीजे API इंटिग्रेशन: गतिविधि
1.2.0
में शुरू की गईActivityResultRegistry
API के लिए सहायता जोड़ी गई. इससेstartActivityForResult()
+onActivityResult()
के साथ-साथrequestPermissions()
+onRequestPermissionsResult()
फ़्लो को मैनेज करने में मदद मिलेगी. साथ ही, इन फ़्लो की जांच करने के लिए हुक भी मिलेंगे. अपडेट किया गया किसी गतिविधि से नतीजा पाना देखें.- इस रिलीज़ में, अमान्य अनुरोध कोड से जुड़ी कई समस्याओं को ठीक किया गया है. साथ ही, अनुमति के अनुरोधों को भेजने से जुड़ी कई समस्याओं को ठीक किया गया है. इनकी वजह से, Activity नतीजे API (एपीआई)
FragmentActivity
के पिछले वर्शन पर काम नहीं करते.FragmentActivity
याAppCompatActivity
में ऐक्टिविटी रिज़ल्ट के एपीआई इस्तेमाल करने के लिए, आपको फ़्रैगमेंट 1.3.0 में अपग्रेड करना होगा.
- इस रिलीज़ में, अमान्य अनुरोध कोड से जुड़ी कई समस्याओं को ठीक किया गया है. साथ ही, अनुमति के अनुरोधों को भेजने से जुड़ी कई समस्याओं को ठीक किया गया है. इनकी वजह से, Activity नतीजे API (एपीआई)
फ़्रैगमेंट रिज़ल्ट एपीआई:
FragmentManager
पर नए एपीआई के ज़रिए, दो फ़्रैगमेंट के बीच नतीजे पास करने की सुविधा जोड़ी गई. यह नेविगेशन में हैरारकी वाले फ़्रैगमेंट (पैरंट/चाइल्ड), Dialogफ़्रैगमेंट, और फ़्रैगमेंट के लिए काम करता है. साथ ही, यह पक्का करता है कि कम से कमSTARTED
होने पर ही नतीजे आपके फ़्रैगमेंट पर भेजे जाएं. टारगेट फ़्रैगमेंट एपीआई की सुविधा बंद कर दी गई है, ताकि इन नए एपीआई का इस्तेमाल किया जा सके. फ़्रैगमेंट रिज़ल्ट एपीआई का इस्तेमाल करके, नतीजे पाना लेख पढ़ें.FragmentOnAttachListener
:FragmentActivity
औरFragment
परonAttachFragment()
कॉलबैक को रोक दिया गया है. ज़्यादा सुविधाजनक विकल्प देने के लिए एक नयाFragmentOnAttachListener
जोड़ा गया है. इससेonAttachFragment()
का डेलिगेशन, अलग-अलग, जांच किए जा सकने वाले लिसनर और आपके चाइल्ड फ़्रैगमेंटमैनेजर के अलावा, फ़्रैगमेंट मैनेजर में लिसनर जोड़ने में सहायता कर सकता है.FragmentScenario
सुधार:fragment-testing
आर्टफ़ैक्ट कीFragmentScenario
क्लास को Kotlin में फिर से लिखा गया है और इसमें कई सुधार किए गए हैं:FragmentScenario
, अबmoveToState()
को लागू करने के लिएsetMaxLifecycle()
का इस्तेमाल करता है, ताकि सभी एपीआई लेवल पर एक जैसा काम किया जा सके. साथ ही, बुनियादी ऐक्टिविटी से फ़्रैगमेंट की स्थिति को अलग किया जा सके.FragmentScenario
में अब पहली बार हरLifecycle.State
पर जाने से पहले, फ़्रैगमेंट की स्थिति का दावा करने के लिए, शुरुआतीLifecycle.State
सेट किया जा सकता है.- अब
onFragment
केFragmentScenario
एपीआई की जगह, Kotlin के बदलाव किए गए एक्सटेंशन के तरीकेwithFragment
का एक विकल्प मौजूद है. इसकी मदद से, वैल्यू दी जा सकती है. खास तौर पर, यह दिए गए ब्लॉक में दिए गए अपवादों को फिर से लागू करता है.
ViewTree
सहायता:Fragment
अब लाइफ़साइकल2.3.0
और SavedState1.1.0
में जोड़े गएViewTreeLifecycleOwner.get(View)
,ViewTreeViewModelStoreOwner.get(View)
, औरViewTreeSavedStateRegistryOwner
एपीआई के साथ काम करता है, ताकिFragment
के अंदरView
का इस्तेमाल करने पर, यह फ़्रैगमेंट कोViewModelStoreOwner
के तौर पर वापस कर देगा. साथ ही, फ़्रैगमेंट केSavedStateRegistryOwner
औरLifecycleOwner
का हिस्सा भी दिखाएगा.TRANSIT_
ऐनिमेशन में बदलाव: फ़्रैगमेंट के डिफ़ॉल्ट इफ़ेक्ट,TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
, औरTRANSIT_FRAGMENT_FADE
, अबAnimation
के बजायAnimator
का इस्तेमाल करें. इन ऐनिमेटर को बनाने के लिए इस्तेमाल किए गए संसाधन अब निजी हैं.setRetainInstance()
का इस्तेमाल बंद किया गया: फ़्रैगमेंट परsetRetainInstance()
तरीके का इस्तेमाल बंद कर दिया गया है. ViewModels की शुरुआत के साथ, डेवलपर के पास डेटा बनाए रखने के लिए एक खास एपीआई होता है, जिसे गतिविधियों, फ़्रैगमेंट, और नेविगेशन ग्राफ़ से जोड़ा जा सकता है. यह डेवलपर को सामान्य, बिना रखरखाव वाले फ़्रैगमेंट का इस्तेमाल करने और उस खास स्थिति को अलग बनाए रखने की अनुमति देता है जिसे वे अलग बनाए रखना चाहते हैं. साथ ही, यह लीक होने के सामान्य सोर्स से बचाता है और बनाए रखी गई स्थिति (जैसे किViewModel
का कंस्ट्रक्टर और इसे मिलने वालेonCleared()
कॉलबैक) के विनाश के लिए उपयोगी प्रॉपर्टी को बनाए रखता है.ViewPager 1 अडैप्टर बंद होना: ViewPager2
1.0.0
के रिलीज़ होने के साथ,ViewPager
के साथ इंटरैक्ट करने वालीFragmentPagerAdapter
औरFragmentStatePagerAdapter
क्लास को बंद कर दिया गया है. ViewPager से ViewPager2 पर माइग्रेट करना देखें.
वर्शन 1.3.0-rc02
27 जनवरी, 2021
androidx.fragment:fragment:1.3.0-rc02
, androidx.fragment:fragment-ktx:1.3.0-rc02
, और androidx.fragment:fragment-testing:1.3.0-rc02
रिलीज़ हुए हैं. वर्शन 1.3.0-rc02 में ये कमिट हैं.
गड़बड़ियां ठीक की गईं
- कॉन्फ़िगरेशन में बदलाव होने के बाद पैरंट
DialogFragment
, चाइल्डDialogFragment
के ऊपर दिखने की समस्या को ठीक कर दिया गया है; चाइल्ड डायलॉग फ़्रैगमेंट अब हमेशा पैरंट डायलॉग फ़्रैगमेंट के ऊपर दिखते हैं. (I30806, b/177439520) Animation
के साथhide
कार्रवाई करने पर होने वाली समस्या ठीक कर दी गई है इससे ऐनिमेशन के अंत में छिपे हुए फ़्रैगमेंट फ़्लैश होंगे. (I57e22, b/175417675)- व्यू हैरारकी से पहले, ट्रांज़िशन जोड़े गए फ़्रैगमेंट
अब ठीक से
RESUMED
तक पहुंच गया है. (I1fc1d, b/177154873)
नए स्टेट मैनेजर की गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट का व्यू
Lifecycle
अब ऐसे मामलों को सही तरीके से हैंडल करता है जहांLifecycle
केCREATED
तक पहुंचने से पहले फ़्रैगमेंट का व्यू खत्म हो जाता है. साथ ही, इसमें "कोई इवेंट शुरू नहीं हुआ" वाले अपवादों से बचा जाता है. (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 में ये कमिट हैं.
नई सुविधाएं
FragmentAction
के लिए Kotlin 1.4 के फ़ंक्शनल इंटरफ़ेस का इस्तेमाल करके, सोर्स और बाइनरी कंपैटबिलिटी को बनाए रखते हुए,FragmentScenario
को पूरी तरह से Kotlin में बदल दिया गया है. (I19d31)
व्यवहार में बदलाव
- फ़्रैगमेंट कंटेनर व्यू, जो
class
याandroid:name
एट्रिब्यूट का इस्तेमाल करके फ़्रैगमेंट को इनफ़्लेट नहीं करते, उन्हें अबFragmentActivity
के बाहर इस्तेमाल किया जा सकता है. (आईडी4397, b/172266337) - किसी फ़्रैगमेंट के ज़्यादा से ज़्यादा लाइफ़साइकल को
DESTROYED
पर सेट करने की कोशिश करने पर, अबIllegalArgumentException
(Ie7651, b/170765622) मिलेगा DESTROYED
स्थिति के साथ फ़्रैगमेंट स्थिति शुरू करने पर, अबIllegalArgumentException
(I73590, b/170765622) मिलेगा
नए स्टेट मैनेजर की गड़बड़ियां ठीक की गईं
Animator
याTRANSIT_FRAGMENT_
में से किसी एक विकल्प का इस्तेमाल करने वाले फ़्रैगमेंट ट्रांज़िशन में रुकावट डालने से, उस समस्या को ठीक किया गया है जहां व्यू अपनी आखिरी स्थिति तक नहीं पहुंच पाता. (I92426, b/169874632)- उस समस्या को ठीक कर दिया गया है जिसकी वजह से,
Animation
से बाहर निकलने वाले फ़्रैगमेंट, पूरी तरह खत्म नहीं हो सके. (I83d65) - ऐसे फ़्रैगमेंट बंद किए जा रहे हैं जिनका असर अब उलटा हो गया है इसे सही तरीके से रद्द करके फिर से शुरू करें. (I62226, b/167092035)
- उस समस्या को ठीक किया गया है जिसकी वजह से
hide()
का एग्ज़िटAnimator
नहीं चल रहा था. (Id7ffe) - फ़्रैगमेंट अब सही तरीके से दिखते हैं, क्योंकि फ़िलहाल इन्हें टाला जाता है और ये तुरंत शुरू हो जाते हैं. (Ie713b, b/170022857)
- ऐनिमेशन के दौरान फ़ोकस किए गए व्यू को हटाने वाले फ़्रैगमेंट,
RESUMED
(I38c65, b/172925703) पर पहुंचने के बाद डिटैच किए गए व्यू पर फ़ोकस को वापस लाने की कोशिश नहीं करेंगे
बाहरी योगदान
FragmentFactory
अब अलग-अलगClassLoader
इंस्टेंस के लिए, फ़्रैगमेंट क्लास को अलग से कैश मेमोरी में सेव करता है. धन्यवाद साइमन शिलर! (#87, b/113886460)
वर्शन 1.3.0-beta01
1 अक्टूबर, 2020
androidx.fragment:fragment:1.3.0-beta01
, androidx.fragment:fragment-ktx:1.3.0-beta01
, और androidx.fragment:fragment-testing:1.3.0-beta01
रिलीज़ हुए हैं. वर्शन 1.3.0-beta01 में ये कमिट हैं.
नई सुविधाएं
setMaxLifecycle()
अबLifecycle
स्थिति कोINITIALIZING
पर सेट करने का समर्थन करता है, जब तक कि फ़्रैगमेंट कोCREATED
में नहीं ले जाया जाता. (b/159662173)
एपीआई में किए गए बदलाव
- Kotlin 1.4 (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) - फ़्रैगमेंट अब
Animations
के बजायAnimators
को प्राथमिकता देते हैं. इसका मतलब है कि दोनों फ़्रैगमेंट में सिर्फ़Animator
चलेगा औरAnimation
को अनदेखा किया जाएगा. (b/167579557) - ऐनिमेशन दर्ज करते समय नए स्टेट मैनेजर से फ़्रैगमेंट फ़्लैश नहीं होते हैं. (b/163084315)
आम समस्या
नए स्टेट मैनेजर का इस्तेमाल करते समय, अगर पिछले फ़्रैगमेंट पर लौटने के बजाय खास इफ़ेक्ट डालने के दौरान back बटन दबाया जाता है, तो पुराने फ़्रैगमेंट को फिर से कभी नहीं जोड़ा जाता है. इसकी वजह से स्क्रीन खाली हो जाती है. (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)
में एक्सपेरिमेंट के तौर पर उपलब्ध एपीआई का इस्तेमाल, यह कंट्रोल करने के लिए किया जा सकता है कि फ़्रैगमेंट मैनेजर, नए स्टेट मैनेजर का इस्तेमाल करता है या नहीं. (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
में अब नाम का पहला अक्षर सेट किया जा सकता हैCREATED
,STARTED
याRESUMED
की लाइफ़साइकल की स्थिति फ़्रैगमेंट को हमेशा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 में ये कमियां हैं.
नई सुविधाएं
onAttachFragment()
कॉलबैक चालू हैFragmentActivity
औरFragment
के इस्तेमाल पर रोक लगा दी गई है. एक नयाFragmentOnAttachListener
इसमें जोड़ा गया है एक और सुविधाजनक विकल्प देकर, लिसनर को अलग-अलग करने के लिए,onAttachFragment()
का और फ़्रैगमेंट मैनेजर्स में लिसनर जोड़ने के लिए सहायता पाएं आपके डायरेक्ट चाइल्ड फ़्रैगमेंट मैनेजर के अलावा कोई और. (I06d3d)
गड़बड़ियां ठीक की गईं
- पैरंट फ़्रैगमेंट अब अपने चाइल्ड फ़्रैगमेंट से पहले, व्यू की स्थिति को पहले जैसा कर सकते हैं. कॉन्फ़िगरेशन में बदलाव होने के बाद, जब
DialogFragment
दूसरेDialogFragment
को चाइल्ड फ़्रैगमेंट के तौर पर दिखाएगा, तब विज़ुअल ऑर्डर की समस्या को ठीक किया जा सकता है. (b/157195715) - उस समस्या को ठीक किया गया है जिसकी वजह से
UseRequireInsteadOfGet
लिंट जांच,?.
और!!
ऑपरेटर के चेन इस्तेमाल को सही तरीके से हैंडल नहीं कर पाती. (b/157677616)
वर्शन 1.3.0-alpha05
20 मई, 2020
androidx.fragment:fragment:1.3.0-alpha05
, androidx.fragment:fragment-ktx:1.3.0-alpha05
, और androidx.fragment:fragment-testing:1.3.0-alpha05
रिलीज़ हुए हैं. वर्शन 1.3.0-alpha05 में ये कमियां हैं.
नई सुविधाएं
Fragment
मेंView
का इस्तेमाल करने पर, लाइफ़साइकल2.3.0-alpha03
सेViewTreeViewModelStoreOwner
और SavedState1.1.0-alpha01
सेViewTreeSavedStateRegistryOwner
के लिए सहायता जोड़ी गई. (aosp/1297993, aosp/1300264)
एपीआई में किए गए बदलाव
setFragmentResult()
औरsetFragmentResultListener()
एपीआई अब शून्य के अलावाBundle
औरFragmentResultListener
का इस्तेमाल करते हैं. पहले से सेट किए गए नतीजे या लिसनर को साफ़ तौर पर मिटाने के लिए,clearFragmentResult()
औरclearFragmentResultListener()
के नए तरीके इस्तेमाल करें. (b/155416778)- लैम्डा लेने वाले
setFragmentResultListener()
Kotlin एक्सटेंशन को अबinline
के तौर पर मार्क किया गया है. (b/155323404)
व्यवहार में बदलाव
Fragment
पर पहले बंदstartActivityForResult()
,startIntentSenderForResult()
, औरrequestPermissions
अब आंतरिक तौर परActivityResultRegistry
का इस्तेमाल करते हैं. इसलिए, उन एपीआई का इस्तेमाल करते समय, आपके अनुरोध कोड के लिए सिर्फ़ लोअर बिट (0xFFFF
से कम) के इस्तेमाल पर लगी पाबंदी को हटाया जाता है. (b/155518741)
दस्तावेज़ से जुड़े अपडेट
Fragment(@LayoutRes int)
औरDialogFragment(@LayoutRes int)
कंस्ट्रक्टर के लिए दस्तावेज़ों का दायरा बढ़ाया गया, ताकि यह साफ़ किया जा सके कि डिफ़ॉल्टFragmentFactory
का इस्तेमाल करने पर, उन्हें आपकी सब-क्लास के बिना आर्ग्युमेंट कंस्ट्रक्टर से कॉल किया जाना चाहिए. (b/153042497)
वर्शन 1.3.0-alpha04
29 अप्रैल, 2020
androidx.fragment:fragment:1.3.0-alpha04
, androidx.fragment:fragment-ktx:1.3.0-alpha04
, और androidx.fragment:fragment-testing:1.3.0-alpha04
रिलीज़ हुए हैं. वर्शन 1.3.0-alpha04 में ये कमियां हैं.
नई सुविधाएं
- नए एपीआई के ज़रिए
FragmentManager
पर दो फ़्रैगमेंट के बीच नतीजे पास करने की सुविधा जोड़ी गई. यह नेविगेशन में हैरारकी वाले फ़्रैगमेंट (पैरंट/चाइल्ड), Dialogफ़्रैगमेंट, और फ़्रैगमेंट के लिए काम करता है. साथ ही, यह पक्का करता है कि कम से कमSTARTED
होने पर ही नतीजे आपके फ़्रैगमेंट पर भेजे जाएं. (b/149787344)
एपीआई में किए गए बदलाव
- टारगेट फ़्रैगमेंट एपीआई बंद कर दिए गए हैं. फ़्रैगमेंट के बीच डेटा पास करने के लिए, नए फ़्रैगमेंट नतीजे के एपीआई का इस्तेमाल करना चाहिए. (b/149787344)
- फ़्रैगमेंट पर
startActivityForResult()
/onActivityResult()
औरrequestPermissions()
/onRequestPermissionsResult()
एपीआई बंद कर दिए गए हैं. कृपया गतिविधि के नतीजे से जुड़े एपीआई का इस्तेमाल करें. (aosp/1290887) - गतिविधि
1.2.0-alpha04
से ब्रेकिंग बदलाव:prepareCall()
तरीके का नाम बदलकरregisterForActivityResult()
कर दिया गया है. (aosp/1278717)
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट के
getViewLifecycleOwner()
कोonSaveInstanceState()
को कॉल करने से पहले बंद कर दिया गया है. यह फ़्रैगमेंट की लाइफ़साइकल के व्यवहार की मिररिंग करता है. (b/154645875) - किसी फ़्रैगमेंट पर
setMenuVisibility(false)
को कॉल करने से, इसके चाइल्ड फ़्रैगमेंट से मिलने वाले मेन्यू की दृश्यता सही तरीके से बदल जाती है. (b/153593580) FragmentContainerView
के साथDialogFragment
के व्यू हैरारकी में फ़्रैगमेंट जोड़ने पर,illegalStateException
को ठीक किया गया. (b/154366601)- किसी गतिविधि के बाहर आपके फ़्रैगमेंट होस्ट करते समय, फ़्रैगमेंट पर
getDefaultViewModelProviderFactory()
तरीका क्रैश नहीं होता है. (b/153762914)
वर्शन 1.3.0-alpha03
1 अप्रैल, 2020
androidx.fragment:fragment:1.3.0-alpha03
, androidx.fragment:fragment-ktx:1.3.0-alpha03
, और androidx.fragment:fragment-testing:1.3.0-alpha03
रिलीज़ हुए हैं. वर्शन 1.3.0-alpha03 में ये कमियां हैं.
एपीआई में किए गए बदलाव
Fragment
परprepareCall
तरीके अबfinal
हैं. (b/152439361)
गड़बड़ियां ठीक की गईं
BottomSheetDialogFragment
का इस्तेमाल करते समय फ़्रैगमेंट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
लिंट नियम बंद किया गया, क्योंकि उनका लाइफ़साइकल और व्यू लाइफ़साइकल हमेशा सिंक में रहते हैं. इस वजह से,observe
को कॉल करते समयthis
याviewLifecycleOwner
का इस्तेमाल करना सुरक्षित रहता है. (b/151765086)
डिपेंडेंसी में बदलाव
- फ़्रैगमेंट, गतिविधि
1.2.0-alpha03
पर निर्भर करते हैं. इसमें गतिविधि1.2.0-alpha02
के एपीआई के ज़रिए, ऐक्टिविटी रिज़ल्ट में अहम सुधार किए गए थे.
वर्शन 1.3.0-alpha02
18 मार्च, 2020
androidx.fragment:fragment:1.3.0-alpha02
, androidx.fragment:fragment-ktx:1.3.0-alpha02
, और androidx.fragment:fragment-testing:1.3.0-alpha02
रिलीज़ हुए हैं. वर्शन 1.3.0-alpha02 में ये कमियां हैं.
नई सुविधाएं
- ऐक्टिविटी
1.2.0-alpha02
मेंActivityResultRegistry
एपीआई के साथ काम करने की सुविधा जोड़ी गई. इससे आपके फ़्रैगमेंट में बिना बदलाव किए तरीकों में बदलाव किए बिनाstartActivityForResult()
+onActivityResult()
औरrequestPermissions()
+onRequestPermissionsResult()
फ़्लो को मैनेज किया जा सकता है. साथ ही, इन फ़्लो की जांच करने के लिए भी हुक दिए जा सकते हैं. अपडेट किया गया किसी गतिविधि से नतीजा पाना देखें. (b/125158199)
एपीआई में किए गए बदलाव
DialogFragment
अब एक कंस्ट्रक्टर उपलब्ध कराता है, जो@LayoutRes
को लेता है. यह लेआउट बताता है किonCreateView()
को डिफ़ॉल्ट रूप से इनफ़्लेट होना चाहिए. (b/150327080)onActivityCreated()
तरीके का इस्तेमाल अब नहीं किया जा सकता. फ़्रैगमेंट के व्यू को छूने वाला कोडonViewCreated()
में किया जाना चाहिए (जिसेonActivityCreated()
से ठीक पहले कॉल किया जाता है) और दूसरे शुरू करने वाला कोडonCreate()
में होना चाहिए. खास तौर पर, गतिविधि केonCreate()
पूरे होने पर कॉलबैक पाने के लिए, गतिविधि केLifecycle
परonAttach()
में एकLifeCycleObserver
रजिस्टर होना चाहिए. साथ ही,onCreate()
कॉलबैक मिलने के बाद, इसे हटा दिया जाना चाहिए. (b/144309266)
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट
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___()
लिंट नियम, ऐसे लोकल वैरिएबल पर फ़ॉल्स पॉज़िटिव नहीं हैं जिनका नाम शैडो किए गए 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 में ये कमियां शामिल हैं.
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट के
getViewLifecycleOwner()
कोonSaveInstanceState()
को कॉल करने से पहले बंद कर दिया गया है. यह फ़्रैगमेंट की लाइफ़साइकल के व्यवहार की मिररिंग करता है. इसे पहले फ़्रैगमेंट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
लिंट नियम को बंद किया गया, क्योंकि उनकी लाइफ़साइकल और व्यू लाइफ़साइकल हमेशा सिंक रहते हैं. इस वजह से,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)
- Kotlin प्रॉपर्टी के नाम को शैडो करने वाले लोकल वैरिएबल नाम का इस्तेमाल करते समय,
UseRequireInsteadOfGet
लिंट की जांच में फ़ॉल्स पॉज़िटिव को ठीक किया गया. (b/149891163) FragmentContainerView
, लेआउट की झलक में गलत कंस्ट्रक्टर इस्तेमाल करने पर,UnsupportedOperationException
नहीं दिखाता है. (b/149707833)
वर्शन 1.2.2
वर्शन 1.2.2
19 फ़रवरी, 2020
androidx.fragment:fragment:1.2.2
, androidx.fragment:fragment-ktx:1.2.2
, और androidx.fragment:fragment-testing:1.2.2
रिलीज़ हुए हैं. वर्शन 1.2.2 में ये कमियां शामिल हैं.
नई लिंट जांच
- लिंट का सुझाव है कि
onCreateView()
,onViewCreated()
, औरonActivityCreated()
मेंOnBackPressedDispatcher
में कॉल करने के लिए,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
का इस्तेमाल करने का सुझाव देने वाली मौजूदा लिंट जांच को बेहतर बनाया गया, ताकिobserve
केlivedata-ktx
एक्सटेंशन तरीके के वर्शन को भी हैंडल किया जा सके. (b/148996309)- कई लिंट जांच के लिए फ़ॉर्मैटिंग को ठीक किया गया (aosp/1157012)
बाहरी योगदान
- Slack की ओर से
require___()
लिंट चेक में योगदान देने के लिए ज़ैक स्वियर्स का धन्यवाद! (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
सुझाया गया कंटेनर है. यह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)
) का इस्तेमाल करते हैं. - लाइफ़साइकल व्यूमॉडल सेव स्टेट इंटिग्रेशन:
SavedStateViewModelFactory
अब डिफ़ॉल्ट फ़ैक्ट्री है. इसका इस्तेमालby viewModels()
,by activityViewModels()
,ViewModelProvider
कंस्ट्रक्टर याViewModelProviders.of()
को फ़्रैगमेंट के साथ इस्तेमाल करते समय किया जाता है. - नई लिंट जांच: नया लिंट चेक जोड़ा गया, जिससे यह पक्का होता है कि
onCreateView()
,onViewCreated()
याonActivityCreated()
सेLiveData
को मॉनिटर करते समय,getViewLifecycleOwner()
का इस्तेमाल किया जा रहा है. getFragmentManager()
का इस्तेमाल बंद कर दिया गया है: फ़्रैगमेंट केgetFragmentManager()
औरrequireFragmentManager()
तरीकों को बंद कर दिया गया है. साथ ही, उन्हें सिंगलgetParentFragmentManager()
तरीके से बदल दिया गया है. इससे फ़्रैगमेंट जोड़ा जाने वाला ऐसाFragmentManager
मिलता है जो शून्य नहीं है.isAdded()
का इस्तेमाल करके यह पता लगाया जा सकता है कि इसे कॉल करना सुरक्षित है या नहीं.FragmentManager.enableDebugLogging()
का इस्तेमाल बंद किया गया है: स्टैटिकFragmentManager.enableDebugLogging
तरीके को बंद कर दिया गया है. फ़्रैगमेंट मैनेजर,FragmentManager
टैग के लिएLog.isLoggable()
का पालन करता है. इसकी मदद से, अपने ऐप्लिकेशन को फिर से कंपाइल किए बिना हीDEBUG
याVERBOSE
लॉगिंग की सुविधा चालू की जा सकती है.
आम समस्याएं
FragmentContainerView
पर सिर्फ़class
याandroid:name
एट्रिब्यूट के ज़रिए रेफ़र किए गए फ़्रैगमेंट, ProGuard अपने-आप सेव नहीं होते. इसलिए, हर फ़्रैगमेंट क्लास के लिए Keep का नियम मैन्युअल तरीके से जोड़ना ज़रूरी है. (b/142601969)class
याandroid:name
की मदद सेFragmentContainerView
के साथ एक्सएमएल में,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
, Lifecycle 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()
(फ़्रैगमेंट1.2.0-rc01
में पेश किया गया) मेंLiveData
को देखते समय,getViewLifecycleOwner()
का इस्तेमाल करने के लिए LitFix अबgetViewLifecycleOwner()
के बजाय, Kotlin प्रॉपर्टी ऐक्सेस सिंटैक्सviewLifecycleOwner
का इस्तेमाल करता है. (aosp/1143821)
वर्शन 1.2.0-rc01
23 अक्टूबर, 2019
androidx.fragment:fragment:1.2.0-rc01
, androidx.fragment:fragment-ktx:1.2.0-rc01
, और androidx.fragment:fragment-testing:1.2.0-rc01
रिलीज़ हुए हैं. वर्शन 1.2.0-rc01 में ये कमियां शामिल हैं.
नई सुविधाएं
FragmentContainerView
में अबandroid:name
के साथ-साथ,class
एट्रिब्यूट का भी इस्तेमाल किया जा सकता है. यह<fragment>
टैग के फ़ंक्शन की डुप्लीकेट कॉपी बनाता है. (b/142722242)- एक नया लिंट चेक जोड़ा गया है, जिससे यह पक्का होता है कि
onCreateView()
,onViewCreated()
याonActivityCreated()
सेLiveData
को देखते समय,getViewLifecycleOwner()
का इस्तेमाल किया जा रहा है. (b/137122478)
गड़बड़ियां ठीक की गईं
DialogFragment
परonDismiss
औरonCancel
कॉलबैक, अब इस बात की गारंटी देते हैं कि उन्हें पास किया गयाDialogInterface
अमान्य है. साथ ही,getDialog()
एक्ज़ीक्यूट किए जाने पर, उनके लिए कोई वैल्यू नहीं दिखाता है. (b/141974033)FragmentContainerView
अब इनफ़्लेशन के हिस्से के तौर परclass
याandroid:name
के तय किए गए फ़्रैगमेंट को जोड़ता है. इससे यह पक्का किया जाता है किfindFragmentById()
औरfindFragmentByTag()
इसके बाद तुरंत काम करें. (b/142520327)- स्टेटस सेव होने की वजह से,
FragmentContainerView
केIllegalStateException
में सुधार किया गया. (b/142580713) FragmentContainerView
क्लास के अस्पष्ट होने पर,FragmentContainerView
मेंUnsupportedOperationException
को ठीक किया गया. (b/142657034)
आम समस्याएं
FragmentContainerView
पर सिर्फ़class
याandroid:name
एट्रिब्यूट के ज़रिए रेफ़र किए गए फ़्रैगमेंट, ProGuard अपने-आप सेव नहीं होते. इसलिए, हर फ़्रैगमेंट क्लास के लिए Keep का नियम मैन्युअल तरीके से जोड़ना ज़रूरी है. जब तक इस समस्या को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)- फ़्रैगमेंट में अब Lit की चेतावनी दिख रही है. यह चेतावनी मिलने पर,
<fragment>
कोFragmentContainerView
से तुरंत बदलने की सुविधा मिलती है. (b/139830056)
गड़बड़ियां ठीक की गईं
androidx.transition
का इस्तेमाल करते समय,ClassCastException
को ठीक किया गया. (b/140680619)- ट्रांज़िशन
1.3.0-beta01
का इस्तेमाल करते समय, फ़्रैगमेंट अबandroidx.transition
ट्रांज़िशन का इंतज़ार करते हैं. (इसके, फ़्रैगमेंट1.2.0-alpha03
और फ़्रैगमेंट1.2.0-alpha02
में तय किए गए फ़्रेमवर्क ट्रांज़िशन और ऐनिमेशन के अलावा),onDestroyView()
डिस्पैच करने से पहलेandroidx.transition
ट्रांज़िशन पूरे होते हैं. (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
मिलता है.isAdded()
का इस्तेमाल करके यह पता लगाया जा सकता है कि कॉल करना सुरक्षित है या नहीं. (b/140574496)- स्टैटिक
FragmentManager.enableDebugLogging
तरीके अब काम नहीं करता. फ़्रैगमेंट मैनेजर,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)
- फ़्रैगमेंट अब ट्रांज़िशन पूरा होने का इंतज़ार करते हैं (इनमें फ़्रैगमेंट
1.2.0-alpha02
में तय किए गए ऐनिमेशन शामिल थे), जोonDestroyView()
भेजने से पहले पूरा होता है. (b/138741697)
वर्शन 1.2.0-alpha02
7 अगस्त, 2019
androidx.fragment:fragment:1.2.0-alpha02
, androidx.fragment:fragment-ktx:1.2.0-alpha02
, और androidx.fragment:fragment-testing:11.2.0-alpha02
रिलीज़ हुए हैं. इस वर्शन में शामिल कमिट को यहां देखा जा सकता है.
नई सुविधाएं
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
वगैरह का इस्तेमाल करता है. इसकी वजह यह है कि यह ऐनिमेशन ज़ेड-ऑर्डर करने से जुड़ी समस्याओं और फ़्रैगमेंट को भेजे जाने वाले विंडो इनसेट को ठीक करता है. (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
रिलीज़ हुए हैं. इस वर्शन में शामिल कमिट को यहां देखा जा सकता है.
नई सुविधाएं
- फ़्रैगमेंट मैनेजर, अब फ़्रैगमेंट के व्यू को अटैच करने के बाद और
onViewCreated()
को कॉल करने से पहले,requestApplyInsets()
को कॉल करता है. इससे यह पक्का किया जाता है कि आपके व्यू में हमेशा सही इनसेट हों. (b/135945162)
गड़बड़ियां ठीक की गईं
replace()
से पहलेsetPrimaryNavigationFragment()
का इस्तेमाल करने वालेFragmentTransaction
को पॉप-अप करते समय,NullPointerException
को ठीक किया गया. (b/134673465)
वर्शन 1.1.0
वर्शन 1.1.0
5 सितंबर, 2019
androidx.fragment:fragment:1.1.0
, androidx.fragment:fragment-ktx:1.1.0
, और androidx.fragment:fragment-testing:1.1.0
रिलीज़ हुए हैं. इस वर्शन में शामिल कमिट को यहां देखा जा सकता है.
1.0.0 के बाद से हुए अहम बदलाव
- फ़्रैगमेंट की जांच करना:
fragment-testing
आर्टफ़ैक्ट मेंFragmentScenario
क्लास होती है, ताकि फ़्रैगमेंट की जांच की जा सके. ज़्यादा जानकारी के लिए, अपने ऐप्लिकेशन के फ़्रैगमेंट से जुड़े दस्तावेज़ की जांच करें देखें. - फ़्रैगमेंट: अब आपके पास फ़्रैगमेंट इंस्टेंस बनाने का काम मैनेज करने के लिए,
FragmentManager
परFragmentFactory
सेट करने का विकल्प है. ऐसा करने पर, नो-आर्ग्युमेंट कंस्ट्रक्टर की ज़रूरी शर्त को हटाना पड़ता है. - ViewModels के लिए Kotlin प्रॉपर्टी डेलिगेट:
fragment-ktx
आर्टफ़ैक्ट में अब दो Kotlin प्रॉपर्टी डेलिगेट हैं: अलग-अलग फ़्रैगमेंट से जुड़े ViewModels को ऐक्सेस करने के लिएby viewModels()
और गतिविधि के दायरे में आने वाले ViewModels को ऐक्सेस करने के लिएby activityViewModels()
. - ज़्यादा से ज़्यादा लाइफ़साइकल: अब
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) replace()
से पहलेsetPrimaryNavigationFragment()
का इस्तेमाल करने वालेFragmentTransaction
को पॉप-अप करते समय,NullPointerException
को ठीक किया गया. (b/134673465)
वर्शन 1.1.0-beta01
5 जून, 2019
androidx.fragment:fragment:1.1.0-beta01
, androidx.fragment:fragment-ktx:1.1.0-beta01
, और androidx.fragment:fragment-testing:1.1.0-beta01
रिलीज़ हुए हैं. इस वर्शन में शामिल कमिट को यहां देखा जा सकता है.
गड़बड़ियां ठीक की गईं
- नेस्ट किए गए फ़्रैगमेंट के लिए,
androidx.lifecycle.Lifecycle
कॉलबैक (खास तौर परSTARTED
,RESUMED
,PAUSED
,STOPPED
, औरDESTROYED
से जुड़े) अब सही तरीके से नेस्ट किए गए हैं. (b/133497591) - फ़्रैगमेंट के
onCreate()
में रजिस्टर किए गएOnBackPressedCallback
इंस्टेंस को अब चाइल्ड फ़्रैगमेंट मैनेजर के मुकाबले ज़्यादा प्राथमिकता दी जाती है. (b/133175997) - पैरंट फ़्रैगमेंट को बदलते समय, चाइल्ड फ़्रैगमेंट अब ऐनिमेट नहीं किए जाते. (b/121017790)
animateLayoutChanges="true"
का इस्तेमाल करते समय, फ़्रैगमेंट ऐनिमेशन और ट्रांज़िशन को अनदेखा कर दिया जाता है. इससे फ़्रैगमेंट ठीक से खत्म नहीं होने की समस्या को ठीक किया जा सकता है. (b/116257087)
वर्शन 1.1.0-alpha09
16 मई, 2019
androidx.fragment:fragment:1.1.0-alpha09
, androidx.fragment:fragment-ktx:1.1.0-alpha09
, और androidx.fragment:fragment-testing:1.1.0-alpha09
रिलीज़ हुए हैं. इस वर्शन में शामिल कमिट को यहां देखा जा सकता है.
एपीआई में किए गए बदलाव
- मुख्य नेविगेशन फ़्रैगमेंट बदलने पर, फ़्रैगमेंट को अब नए
onPrimaryNavigationFragmentChanged(boolean)
तरीके पर कॉलबैक मिलता है. aosp/960857
गड़बड़ियां ठीक की गईं
- चाइल्ड फ़्रैगमेंट की वजह से बढ़ा हुआ मेन्यू आइटम, अब पैरंट फ़्रैगमेंट को हटाने पर सही तरीके से हट जाता है. b/131581013
वर्शन 1.1.0-alpha08
7 मई, 2019
androidx.fragment:fragment:1.1.0-alpha08
, androidx.fragment:fragment-ktx:1.1.0-alpha08
, और androidx.fragment:fragment-testing:1.1.0-alpha08
रिलीज़ हुए हैं. इस वर्शन में शामिल कमिट को यहां देखा जा सकता है.
यह रिलीज़ प्राथमिकताओं 1.1.0-alpha01 से लेकर 1.1.0-alpha04 तक के साथ काम नहीं करती है. फ़्रैगमेंट के इस वर्शन का इस्तेमाल करते समय, कृपया प्राथमिकताएं 1.1.0-alpha05 पर अपग्रेड करें.
नई सुविधाएं
postponeEnterTransition()
का नया ओवरलोड जोड़ा गया, जिसमें समय खत्म होने की जानकारी दी गई है. इसके बाद फ़्रैगमेंट अपने-आपstartPostponedEnterTransition()
b/120803208 को कॉल करेगा
एपीआई में किए गए बदलाव
- नुकसान पहुंचा सकने वाला बदलाव:
Bundle
के जिस तरीके से पहलेFragmentFactory
instantiate
काम करना बंद किया गया था उसे हटा दिया गया है. 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
पर नहीं ले जाए जाएंगे. इसकी वजह से, ViewModels और चाइल्ड सेव किए गए फ़्रैगमेंट सही तरीके से नष्ट नहीं हो पाएंगे. (b/129593351) restoreSaveState
में, इंस्टेंस स्थिति सेव होने के बाद, सेव किए गए फ़्रैगमेंट के डिसिंक की वजह से होने वाले क्रैश को ठीक किया गया है. (b/130433793) (aosp/947824)- जिन समस्याओं को ठीक कर दिया गया है उनमें
FragmentManager
के बैक स्टैक होने पर, फ़्रैगमेंट लाइफ़साइकल के साथ जोड़े गएOnBackPressedCallback
को कॉल नहीं किया जाता. ज़्यादा जानकारी के लिए, androidx.activity 1.0.0-alpha07 देखें. (aosp/948209) - फ़्रैगमेंट अब ऐनिमेशन के लिए
LAYER_TYPE_HARDWARE
लागू नहीं करते. अगर आपको खास तौर पर हार्डवेयर लेयर वाले ऐनिमेशन की ज़रूरत है, तो कृपया इसे अपने ऐनिमेशन के हिस्से के तौर पर सेट करें. (b/129486478)
वर्शन 1.1.0-alpha06
3 अप्रैल, 2019
androidx.fragment:fragment:1.1.0-alpha06
, androidx.fragment:fragment-ktx:1.1.0-alpha06
, और androidx.fragment:fragment-testing:1.1.0-alpha06
रिलीज़ हुए हैं. इस वर्शन में शामिल कमिट को यहां देखा जा सकता है.
नई सुविधाएं
- फ़्रैगमेंट Manager से मिलने वाले अपवादों में, अब मैसेज में फ़्रैगमेंट का नाम शामिल किया जाता है. (b/67759402)
एपीआई में किए गए बदलाव
Fragment
औरFragmentActivity
में अब एक दूसरा कंस्ट्रक्टर है, जो@LayoutRes int
लेता है. यह आपकी क्लास की जानकारी देने के पिछले व्यवहार को@ContentView
से बदल देता है. यह तरीका ऐप्लिकेशन और लाइब्रेरी मॉड्यूल, दोनों पर काम करता है. (b/128352521)- फ़्रैगमेंट ऐक्टिविटी के
onActivityResult()
को अब@CallSuper
के तौर पर सही तरीके से मार्क कर दिया गया है. (b/127971684) - फ़्रैगमेंट फ़ैक्ट्री का
instantiate
वाला वह तरीका जो तर्क के साथ बंडल लेता है, उस पर रोक लगा दी गई है. ऐसे में, ऐप्लिकेशन को ऐसे नएinstantiate
ओवरलोड का इस्तेमाल करना चाहिए जिसमें बंडल न हो. (b/128836103) FragmentScenario
तरीकों के बारे में अब@StyleRes
के साथ सही तरीके से एनोटेट किया गया है. (aosp/924193)FragmentTabHost
के इस्तेमाल पर रोक लगा दी गई है. (b/127971835)- फ़्रैगमेंट ऐक्टिविटी का
getThemedContext()
हटा दिया गया है. (aosp/934078)
गड़बड़ियां ठीक की गईं
- 1.1.0-alpha05 में रिग्रेशन ठीक किया गया जिसकी वजह से इनकमिंग फ़्रैगमेंट स्क्रीन पर फ़्लैश हो गया. (b/129405432)
- उस समस्या को ठीक किया गया है जिसकी मदद से, कार्रवाई के लिए groupbackStack+replace+popBackStack सीरीज़ के बाद मुख्य नेविगेशन फ़्रैगमेंट खो जाता है. (b/124332597)
- फ़्रैगमेंट की स्थिति को पहले जैसा करते समय, आपकी ऐक्टिविटी पर
@ContentView
कंस्ट्रक्टर का इस्तेमाल करते समय आने वाली गड़बड़ी ठीक की गई है. (b/127313094) - मौजूदा टारगेट फ़्रैगमेंट को किसी ऐसे फ़्रैगमेंट से बदलते समय जिसे अभी तक फ़्रैगमेंट मैनेजर से अटैच नहीं किया गया है,
setTargetFragment()
का लॉजिक ठीक किया गया. (aosp/932156)
वर्शन 1.1.0-alpha05
13 मार्च, 2019
androidx.fragment:fragment:1.1.0-alpha05
, androidx.fragment:fragment-ktx:1.1.0-alpha05
, और androidx.fragment:fragment-testing:1.1.0-alpha05
रिलीज़ हुए हैं. इस वर्शन में शामिल कमिट की पूरी सूची यहां देखी जा सकती है.
नई सुविधाएं
@ContentView
एनोटेशन लुकअप को अब कैश मेमोरी में सेव किया गया है (b/123709449)
व्यवहार में बदलाव
- किसी दूसरे फ़्रैगमेंट मैनेजर से अटैच किए गए फ़्रैगमेंट के साथ,
remove()
,hide()
,show()
,detach()
, औरsetPrimaryNavigationFragment()
को कॉल करने पर, अब बिना किसी रुकावट के (aosp/904301) के बजायIllegalStateException
की गड़बड़ी होती है
गड़बड़ियां ठीक की गईं
FragmentActivity
के लिएonNewIntent
अब@CallSuper
(b/124120586) के साथ सही तरीके से मार्क हो गया है- उस समस्या को ठीक कर दिया गया है जिसकी वजह से
getDialog().dismiss()
याgetDialog().cancel()
(b/126563750) का इस्तेमाल करते समय,DialogFragment
केonDismiss()
को दो बार कॉल किया जा सकता था
वर्शन 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
को लागू करता है. साथ ही, यह हाल ही में रिलीज़ की गई सेव की गई स्टेट लाइब्रेरी [aosp/824380] पर निर्भर करता है - मौजूदा गतिविधि से जुड़े ViewModels को फिर से पाने के लिए,
by activityViewModels
Kotlin प्रॉपर्टी डेलिगेट जोड़ा गया है [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] दिखाता है
गड़बड़ियां ठीक की गईं
- ठीक किया गया legalStateअपवाद: स्टेटस सेव नहीं किया जा सका b/120814739
- सेव की गई इंस्टेंस स्थिति से वापस लाए जा रहे फ़्रैगमेंट को अब हमेशा शून्य नहीं वाला
Bundle
[b/119794496] मिलेगा - फिर से जोड़े जाने पर हटाए गए फ़्रैगमेंट अपने
Lifecycle
ऑब्जेक्ट का फिर से इस्तेमाल नहीं करते [b/118880674]
वर्शन 1.1.0-alpha02
3 दिसंबर, 2018
नई सुविधाएं
- फ़्रैगमेंट सिनेमैटिक के Kotlin एक्सटेंशन की मदद से, अब
FragmentFactory
इंस्टेंस में पास करने के विकल्प के तौर पर, फ़्रैगमेंट कंस्ट्रक्शन के लिए लैम्डा का इस्तेमाल किया जा सकता है. (aosp/812913)
गड़बड़ियां ठीक की गईं
- बैक स्टैक (b/119256498) पर नेस्ट किए गए फ़्रैगमेंट का इस्तेमाल करते समय, गैर-कानूनी स्टेट अपवाद को ठीक किया गया
FragmentFactory
(aosp/820540) के साथFragmentScenario.recreate()
का इस्तेमाल करने पर होने वाले क्रैश को ठीक किया गया- फ़्रैगमेंट को हटाने के बाद, टारगेट फ़्रैगमेंट को ऐक्सेस न करने की समस्या को ठीक किया गया है (aosp/807634)
वर्शन 1.1.0-alpha01
5 नवंबर, 2018
यह YouTube की पहली रिलीज़ है
fragment-testing
आर्टफ़ैक्ट और FragmentScenario
, जो आर्टफ़ैक्ट की इमारत के
androidx.test:कोर एपीआई. ज़्यादा जानकारी के लिए, फ़्रैगमेंट टेस्टिंग दस्तावेज़ देखें.
नई सुविधाएं
- अलग-अलग फ़्रैगमेंट की जांच करने के लिए, नई फ़्रैगमेंट स्थिति की क्लास.
- अब किसी भी
FragmentManager
परFragmentFactory
सेट करके, यह तय किया जा सकता है कि नए फ़्रैगमेंट इंस्टेंस इंस्टैंशिएट किए जाते हैं. - वापस पाने के लिए,
by viewModels()
Kotlin प्रॉपर्टी का नया डेलिगेट जोड़ा गया फ़्रैगमेंट से ViewModels. - लंबित इनपुट इवेंट (जैसे कि क्लिक) अब फ़्रैगमेंट के
onStop()
.
एपीआई में किए गए बदलाव
- फ़्रैगमेंट एपीआई में, शून्य हो जाने की स्थिति के एनोटेशन में बड़े पैमाने पर बढ़ोतरी की गई है की जगह है.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक करें जिसकी वजह से LiveData में फ़्रैगमेंट की कार्रवाइयां पूरी नहीं हो सकीं (b/77944637)
आम समस्याएं
- टारगेट फ़्रैगमेंट को ऐक्सेस नहीं किया जा सकता फ़्रैगमेंट मैनेजर.
fragment-testing
,androidx.test:core:1.0.0-beta01
पर निर्भर करता है, न कि सहीandroidx.test:core:1.0.0
.