قطعه
| آخرین به روز رسانی | انتشار پایدار | کاندید را آزاد کنید | نسخه بتا | انتشار آلفا |
|---|---|---|---|---|
| 13 آگوست 2025 | 1.8.9 | - | - | - |
اعلام وابستگی ها
برای افزودن وابستگی به Fragment، باید مخزن Google Maven را به پروژه خود اضافه کنید. برای اطلاعات بیشتر، مخزن Maven Google را بخوانید.
وابستگیهای مصنوعات مورد نیاز خود را در فایل build.gradle برای برنامه یا ماژول خود اضافه کنید:
شیار
dependencies { def fragment_version = "1.8.9" // Java language implementation implementation "androidx.fragment:fragment:$fragment_version" // Kotlin implementation "androidx.fragment:fragment-ktx:$fragment_version" // Compose implementation "androidx.fragment:fragment-compose:$fragment_version" // Testing Fragments in Isolation debugImplementation "androidx.fragment:fragment-testing-manifest:$fragment_version" androidTestImplementation "androidx.fragment:fragment-testing:$fragment_version" }
کاتلین
dependencies { val fragment_version = "1.8.9" // Java language implementation implementation("androidx.fragment:fragment:$fragment_version") // Kotlin implementation("androidx.fragment:fragment-ktx:$fragment_version") // Compose implementation("androidx.fragment:fragment-compose:$fragment_version") // Testing Fragments in Isolation debugImplementation("androidx.fragment:fragment-testing:$fragment_version") }
برای اطلاعات بیشتر درباره وابستگیها، به افزودن وابستگیهای ساخت نگاه کنید.
بازخورد
بازخورد شما به بهتر شدن Jetpack کمک می کند. اگر مسائل جدیدی کشف کردید یا ایده هایی برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل از ایجاد کتابخانه جدید، به مسائل موجود در این کتابخانه نگاهی بیندازید. با کلیک کردن روی دکمه ستاره می توانید رای خود را به یک موضوع موجود اضافه کنید.
برای اطلاعات بیشتر به مستندات ردیاب مشکل مراجعه کنید.
نسخه 1.8
نسخه 1.8.9
13 آگوست 2025
androidx.fragment:fragment-*:1.8.9 منتشر شد. نسخه 1.8.9 شامل این commit ها است.
رفع اشکال
- مشکلی برطرف شد که در آن لغو یک ژست پیشبینی کننده بازگشت که عملیات پنهان کردن را ایجاد میکند، باعث میشود که حرکت بعدی هنگام استفاده از انیماتورها به درستی متحرک نشود. ( I0a400 , b/384765586 )
- خطایی رفع شد که در آن ترکیبی از
setMaxLifecycleوpopBackStackنتوانست قطعه بالایی را به RESUMED منتقل کند. ( I3448b , b/406127576 )
نسخه 1.8.8
4 ژوئن 2025
androidx.fragment:fragment-*:1.8.8 منتشر شد. نسخه 1.8.8 شامل این commit ها است.
رفع اشکال
- مشکلی که در آن
FragmentManagerهنگام تلاش برای ذخیره وضعیت Fragmentهایی که باsetMaxLifecycle(Lifecycle.State.INITIALIZED)اضافه شده بودند از کار می افتاد، برطرف شد. این قطعات، از آنجایی که هرگز از طریقonCreate()نمیگذرند، دیگر هیچ حالتی ذخیره یاonSaveInstanceState()فراخوانی نمیشوند. ( I6e37a )
نسخه 1.8.7
20 مه 2025
androidx.fragment:fragment-*:1.8.7 منتشر شد. نسخه 1.8.7 حاوی این commit ها است.
رفع اشکال
- مشکل عدم وضعیت مناسب
FragmentManagerپس از پاپ و جایگزینی عملیات در همان فریم را برطرف کرد که میتواند باعث خرابی همراه با پاپ کردن backstack از طریقpopBackStackیا حرکت پیشبینی کننده برگشت شود. ( I50ad1 ) - رفع خرابی ناشی از استفاده از AndroidX Transitions و وارد شدن به موردی که در آن تراکنشهای سریع متوالی قطعه تلاش میکنند یک انتقال شروع نشده را لغو کنند و کتابخانه AndroidX Transition وضعیت انتقال را به درستی پاک نمیکند. (به b/414612221 مراجعه کنید). ( IB5235 )
نسخه 1.8.6
12 فوریه 2025
androidx.fragment:fragment-*:1.8.6 منتشر شد. نسخه 1.8.6 حاوی این commit ها است.
رفع اشکال
- نادیده گرفتن
setOnApplyWindowInsetsListenerدرFragmentContainerViewاکنون یک شنونده تهی می گیرد که با آنچه چارچوب اجازه می دهد مطابقت دارد. ( I575f0 , b/282790626 )
نسخه 1.8.5
30 اکتبر 2024
androidx.fragment:fragment-*:1.8.5 منتشر شد. نسخه 1.8.5 شامل این commit ها است.
رفع اشکال
- رفع یک
IllegalStateExceptionکه توسطsaveBackStackتنها پس از لغو یا قطع شدن یک حرکت پیشگویانه بازگشت ایجاد شده بود. ( I3387d , b/342419080 )
نسخه 1.8.4
2 اکتبر 2024
androidx.fragment:fragment-*:1.8.4 منتشر شد. نسخه 1.8.4 حاوی این commit ها است.
رفع اشکال
- مشکلی که در آن فشردن سریع دکمه بازگشت سیستم یا انجام سریع ژست برگشتی باعث از کار افتادن Fragments در هنگام استفاده از Androidx Transitions میشود، برطرف شد. ( Ibc038 , b/364804225 )
- مشکلی در بخشها برطرف شد که در آن قطع کردن یک حرکت پیشبینیکننده بازگشت، مدیر قطعه را به حالت نامشخصی میفرستد و حتی قطعه اشتباه را نشان میدهد. ( If82e2 , b/338624457 )
- هنگام تعویض پویا کلاسی که نمونه
AndroidFragmentشما استفاده میکند، یکUninitializedPropertyAccessExceptionدرAndroidFragmentرفع کرد. ( I12dea )
نسخه 1.8.3
4 سپتامبر 2024
androidx.fragment:fragment-*:1.8.3 منتشر شد. نسخه 1.8.3 شامل این commit ها است.
رفع اشکال
-
FragmentManagerاکنون هنگام مدیریت ژست Predictive Back به درستی عملیات در انتظار را در نظر می گیرد. این باید اطمینان حاصل کند که انجام یک سیستم دیگر باعث ایجادIndexOutOfBoundsExceptionنمی شود. ( I9ba32 , b/342316801 ) - اگر
AndroidFragmentبه ترکیب اضافه شود، در حالی که وضعیت فعالیت/قطعه از قبل ذخیره شده باشد، دیگر خراب نمی شود. ( I985e9 , b/356643968 )
نسخه 1.8.2
24 جولای 2024
androidx.fragment:fragment-*:1.8.2 منتشر شد. نسخه 1.8.2 حاوی این commit ها است.
رفع اشکال
-
AndroidFragmentاکنون بهدرستی مواردی را که قطعه والد در پشته Fragment قرار میگیرد، کنترل میکند، و از مشکلات «هیچ نمایی برای شناسه» در هنگام بازگشت به آن قطعه اجتناب میکند. ( I94608 ) - قطعات اضافه شده از طریق روش
FragmentTransaction.addکه یکViewGroupرا می گیرد، اکنون قبل از رفتن بهonStart()منتظرonContainerAvailableمی شود. این روی کاربران آن API تأثیر میگذارد، مانندAndroidFragment، که اکنون منتظر میماند تاAndroidFragmentدوباره وارد ترکیب شود و سپس آن را از طریقonStart()منتقل کند. ( I94608 )
نسخه 1.8.1
26 ژوئن 2024
androidx.fragment:fragment-*:1.8.1 منتشر شد. نسخه 1.8.1 شامل این commit ها است.
رفع اشکال
- مشکلی را برطرف کرد که در آن قطعات بدون کانتینر بلافاصله هنگام شروع یک حرکت پیشبینی کننده برگشت،
DESTROYEDشدند. اکنون آنها تا زمانی که ژست کامل شود در حالتCREATEDنگه داشته می شوند. ( If6b83 , b/345244539 )
نسخه 1.8.0
12 ژوئن 2024
androidx.fragment:fragment-*:1.8.0 منتشر شد. نسخه 1.8.0 شامل این commit ها است.
تغییرات مهم از 1.7.0
- آرتیفکت
fragment-composeاکنون حاویAndroidFragmentComposableاست که اجازه میدهد قطعات را از طریق نام کلاس قطعه به سلسله مراتب Compose اضافه کنید. به طور خودکار ذخیره و بازیابی وضعیت قطعه را انجام می دهد. این باید به عنوان جایگزینی مستقیم برای رویکرد توصیه شده قبلی استفاده ازAndroidViewBindingبرای افزایش یک Fragment استفاده شود. - پاسخ به تماس
onBackStackChangeCancelledدر رابطOnBackStackChangedListenerFragmentManagerاکنون به عنوان بخشی از اجرای عملیات درFragmentManagerفعال میشود و آن را مطابق با زمانبندی پاسخ به تماسonBackStackChangeCommittedنزدیکتر میکند.
نسخه 1.8.0-rc01
29 مه 2024
androidx.fragment:fragment-*:1.8.0-rc01 منتشر شد. نسخه 1.8.0-rc01 حاوی این commit ها است.
رفع اشکال
- پاسخ به تماس
onBackStackChangeCancelledدر رابطFragmentManagers OnBackStackChangedListenerاکنون به عنوان بخشی از اجرای عملیات درFragmentManagerفعال میشود و آن را مطابق با زمانبندی پاسخ به تماسonBackStackChangeCommittedنزدیکتر میکند. ( I5ebfb , b/332916112 )
نسخه 1.8.0-beta01
14 مه 2024
androidx.fragment:fragment-*:1.8.0-beta01 منتشر شد. نسخه 1.8.0-beta01 حاوی این تعهدات است.
رفع اشکال
- از Fragment
1.7.1: Predictive Back اکنون فقط برای تراکنشهایی اجرا میشود که در آن همه قطعات دارای Animator یا Seekable Androidx Transition هستند. این مشکلی را برطرف می کند که در آن لغو یک تراکنش تا حدی قابل جستجو می تواند باعث سیاه شدن صفحه شود. ( I43037 , b/339169168 )
نسخه 1.8.0-alpha02
17 آوریل 2024
androidx.fragment:fragment-*:1.8.0-alpha02 منتشر شد. نسخه 1.8.0-alpha02 حاوی این تعهدات است.
رفع اشکال
- From Fragment
1.7.0-rc02: گزارش هایی اضافه شد تا نشان دهد چرا تنظیم یکsharedElementبدون هیچ گونه انتقال دیگری اجرا نمی شود. ( Iec48e ) - از Fragment
1.7.0-rc02: اشکالی را برطرف کرد که در آن اگر یک عنصر مشترک غیرقابل جستجو به تراکنشهایی اضافه شود که در آن همه انتقالهای دیگر قابل جستجو هستند، خرابی رخ میدهد. اکنون معامله به درستی غیرقابل جستجو در نظر گرفته می شود. ( I18ccd )
نسخه 1.8.0-alpha01
3 آوریل 2024
androidx.fragment:fragment-*:1.8.0-alpha01 منتشر شد. نسخه 1.8.0-alpha01 حاوی این تعهدات است.
ویژگی های جدید
-
AndroidFragmentComposableجدید اجازه می دهد تا قطعات را از طریق نام کلاس قطعه به سلسله مراتب Compose اضافه کنید. به طور خودکار ذخیره و بازیابی وضعیت قطعه را انجام می دهد. این می تواند به عنوان یک جایگزین مستقیم برای AndroidViewBindingComposableاستفاده شود. ( b/312895363 , Icf841 )
تغییرات اسناد و مدارک
- اسناد به روز شده برای
OnBackStackChangedListenerAPIها برای نشان دادن زمان فراخوانی و نحوه استفاده از آنها. ( I0bfd9 )
به روز رسانی وابستگی
- Fragment اکنون به Profile Installer 1.3.1 بستگی دارد.
نسخه 1.7
نسخه 1.7.1
14 مه 2024
androidx.fragment:fragment-*:1.7.1 منتشر شد. نسخه 1.7.1 حاوی این commit ها است.
رفع اشکال
- پیشبینیکننده اکنون فقط برای تراکنشهایی اجرا میشود که در آنها همه قطعات دارای Animator یا Seekable Androidx Transition هستند. این مشکلی را برطرف می کند که در آن لغو یک تراکنش تا حدی قابل جستجو باعث ایجاد صفحه خالی می شود. ( I43037 , b/339169168 )
نسخه 1.7.0
1 مه 2024
androidx.fragment:fragment-*:1.7.0 منتشر شد. نسخه 1.7.0 شامل این commit ها است.
پشتیبانی پیش بینی کننده ژست برگشتی
- Fragments اکنون هنگام استفاده از
Animatorیا هنگام استفاده از AndroidX Transition 1.5.0 از Predictive درون برنامه پشتیبانی می کند. این به کاربران اجازه می دهد تا قبل از تصمیم به انجام تراکنش از طریق تکمیل ژست یا لغو، با جستجوی Animator/Transition از ژست برگشت برای دیدن قطعه قبلی استفاده کنند.
| سیستم انتقال | منبع XML | پشتیبان پیشگویانه |
|---|---|---|
Animation | R.anim | خیر |
Animator | R.animator | بله |
Transition چارچوب | R.transition | خیر |
AndroidX Transition با Transition 1.4.1 یا کمتر | R.transition | خیر |
AndroidX Transition با Transition 1.5.0 | R.transition | بله |
اگر بعد از انتخاب ژست پیشبینی کننده پیشبینی در Fragments، مشکلی در پشتیبانی Predictive Back در Fragments مشاهده کردید، لطفاً با یک پروژه نمونه که مشکل شما را بازتولید میکند ، مشکلی را علیه Fragment ثبت کنید . میتوانید با استفاده از FragmentManager.enabledPredictiveBack(false) در onCreate() فعالیت خود، پیشبینیکننده را غیرفعال کنید.
FragmentManager.OnBackStackChangedListener() اکنون به ترتیب onBackStackChangeProgressed() و onBackStackChangeCancelled() برای دریافت پیشرفت پیشبینیکننده برگشت و رویدادهای لغو شده ارائه میکند.
آرتیفکت قطعه سازی
یک مصنوع fragment-compose جدید ایجاد شده است که بر روی پشتیبانی از برنامههایی تمرکز دارد که در حال حرکت از معماری مبتنی بر قطعه به معماری کاملاً مبتنی بر Compose هستند.
اولین ویژگی موجود در این مصنوع جدید، یک روش پسوند content در Fragment است که با ایجاد یک ComposeView برای شما و تنظیم ViewCompositionStrategy صحیح، به دنبال آسانتر کردن استفاده از Compose برای رابط کاربری یک Fragment است.
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 حاوی این commit ها است.
رفع اشکال
- گزارشهایی اضافه شد تا نشان دهد چرا تنظیم یک
sharedElementبدون هیچ گونه انتقال دیگری اجرا نمیشود. ( Iec48e ) - رفع اشکالی که در آن اگر یک عنصر مشترک غیرقابل جستجو به تراکنشهایی اضافه شود که در آن همه انتقالهای دیگر قابل جستجو هستند، خرابی رخ میدهد. اکنون معامله به درستی غیرقابل جستجو در نظر گرفته می شود. ( I18ccd )
نسخه 1.7.0-rc01
3 آوریل 2024
androidx.fragment:fragment-*:1.7.0-rc01 منتشر شد. نسخه 1.7.0-rc01 حاوی این commit ها است.
به روز رسانی وابستگی
- Fragment اکنون به Profile Installer 1.3.1 بستگی دارد.
نسخه 1.7.0-beta01
20 مارس 2024
androidx.fragment:fragment-*:1.7.0-beta01 منتشر شد. نسخه 1.7.0-beta01 حاوی این تعهدات است.
تغییرات API
-
FragmentHostCallbackاکنون در Kotlin نوشته شده است به طوری که پوچ پذیری نوع عمومی Host با پوچ بودن نوع برگشتیonGetHost()مطابقت دارد. ( I40af5 )
رفع اشکال
- مشکلی را برطرف کرد که در آن هنگام انجام یک حرکت پیشگویانه بازگشت بر روی قطعه ای که در یک کانتینر نیست، آن قطعه هرگز از بین نمی رفت. Fragment اکنون بلافاصله به حالت نهایی منتقل می شود. ( Ida0d9 )
- مشکلی در Fragments رفع شد که در آن قطع کردن انتقالهای ورودی با یک حرکت پیشگویانه، نمای ورودی را از بین میبرد و یک صفحه خالی باقی میماند. ( ID3f22 , b/319531491 )
نسخه 1.7.0-alpha10
7 فوریه 2024
androidx.fragment:fragment-*:1.7.0-alpha10 منتشر شد. نسخه 1.7.0-alpha10 حاوی این commit ها است.
رفع اشکال
- مشکل شناخته شده در نسخه قبلی Fragment برطرف شد که در آن با استفاده از پشتیبانی Fragment's Predictive Back برای
Animatorیا AndroidX Transition، اگر هیچFragmentManager.OnBackStackChangedListenerاز طریقaddOnBackStackChangedListenerاضافه نشده باشد، Fragments یکNullPointerExceptionازhandleOnBackProgressedپرتاب می کند. ( I7c835 )
نسخه 1.7.0-alpha09
24 ژانویه 2024
androidx.fragment:fragment-*:1.7.0-alpha09 منتشر شد. نسخه 1.7.0-alpha09 حاوی این commit ها است.
آرتیفکت قطعه سازی
یک مصنوع fragment-compose جدید ایجاد شده است که بر روی پشتیبانی از برنامههایی تمرکز دارد که در حال حرکت از معماری مبتنی بر قطعه به معماری کاملاً مبتنی بر Compose هستند.
اولین ویژگی موجود در این مصنوع جدید، یک روش پسوند content در Fragment است که با ایجاد یک ComposeView برای شما و تنظیم ViewCompositionStrategy صحیح، به دنبال آسانتر کردن استفاده از Compose برای رابط کاربری یک Fragment است. ( 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 )
موضوع شناخته شده
- هنگام استفاده از پشتیبانی Fragment's Predictive Back برای
Animatorیا AndroidX Transition، اگر هیچFragmentManager.OnBackStackChangedListenerاز طریقaddOnBackStackChangedListenerاضافه نشده باشد، Fragments یکNullPointerExceptionازhandleOnBackProgressedپرتاب می کند. افزودن دستی شنونده، خرابی را برطرف خواهد کرد. در نسخه بعدی Fragments یک راه حل برای این موضوع در دسترس خواهد بود.
نسخه 1.7.0-alpha08
10 ژانویه 2024
androidx.fragment:fragment-*:1.7.0-alpha08 منتشر شد. نسخه 1.7.0-alpha08 حاوی این commit ها است.
پاک کن
- راه حل برای کتابخانه Transition که در Transition
1.5.0-alpha06رفع شده است، حذف شد. ( I04356 )
نسخه 1.7.0-alpha07
29 نوامبر 2023
androidx.fragment:fragment-*:1.7.0-alpha07 منتشر شد. نسخه 1.7.0-alpha07 حاوی این commit ها است.
رفع اشکال
- رفع
NullPointerExceptionناشی از تنظیم یک انتقال عنصر مشترک و عدم تنظیم یک enter/exitTransition نیز. ( I8472b ) - از Fragment
1.6.2: هنگامی که Fragment یکFragmentContainerViewباد میشود، حالات آن مانندFragmentManager، Host و id اکنون در پاسخ به تماسonInflateقابل دسترسی هستند. ( I1e44c , b/307427423 ) - از Fragment
1.6.2: وقتی ازclearBackStackبرای حذف مجموعهای از قطعات استفاده میکنید، اکنونViewModelهر قطعه تودرتو با پاک شدنViewModelsهای قطعه والد پاک میشود. ( I6d83c , b/296173018 )
نسخه 1.7.0-alpha06
4 اکتبر 2023
androidx.fragment:fragment-*:1.7.0-alpha06 منتشر شد. نسخه 1.7.0-alpha06 حاوی این commit ها است.
به روز رسانی وابستگی
- قطعات بهروزرسانی شدهاند تا به API جدید
animateToStartکه در Transition1.5.0-alpha04اضافه شده است وابسته باشند.
نسخه 1.7.0-alpha05
20 سپتامبر 2023
androidx.fragment:fragment-*:1.7.0-alpha05 منتشر شد. نسخه 1.7.0-alpha05 حاوی این commit ها است.
ویژگی های جدید
- Fragments اکنون هنگام استفاده از Androidx Transitions از Predictive Back پشتیبانی می کند. این به شما امکان می دهد قبل از تصمیم به انجام یا لغو تراکنش از طریق ژست کامل شده، از ژست برگشتی برای جستجوی قطعه قبلی با Androidx Transition سفارشی خود استفاده کنید. برای فعال کردن این ویژگی باید به نسخه Transition
1.5.0-alpha03وابسته باشید. ( Ib49b4 , b/285175724 )
مسائل شناخته شده
- در حال حاضر مشکلی وجود دارد که در آن پس از اینکه یک ژست برگشتی را با یک انتقال یک بار لغو کردید، دفعه بعد که ژست برگشتی را شروع کردید، تغییر را اجرا نمی کند و باعث ایجاد صفحه خالی می شود. این ممکن است به دلیل مشکلی در کتابخانه Transition باشد. ( b/300157785 ). اگر این مشکل را مشاهده کردید، لطفاً با پروژه نمونهای که مشکل شما را بازتولید میکند ، مشکلی را علیه Fragment ثبت کنید . میتوانید با استفاده از
FragmentManager.enabledPredictiveBack(false)درonCreate()فعالیت خود، پیشبینیکننده را غیرفعال کنید.
نسخه 1.7.0-alpha04
6 سپتامبر 2023
androidx.fragment:fragment-*:1.7.0-alpha04 منتشر شد. نسخه 1.7.0-alpha04 حاوی این commit ها است.
رفع اشکال
- مشکلی هنگام لغو یک حرکت پیشبینی کننده برگشت که در آن قطعات نتوانستند به حالت چرخه زندگی صحیح برسند، برطرف شد. ( I7cffe , b/297379023 )
- رگرسیونهایی که در آن انیمیشنها اجازه داشتند با Transitions اجرا شوند، رفع شد. ( I59f36 )
- مشکلی در هنگام استفاده از Predictive Back با قطعاتی که تلاش برای دو بار بازگشت سریع پشت سر هم در دومین تا آخرین قطعه در پشته پشته باعث خرابی میشد، برطرف شد. ( Ifa1a4 )
نسخه 1.7.0-alpha03
23 آگوست 2023
androidx.fragment:fragment-*:1.7.0-alpha03 منتشر شد. نسخه 1.7.0-alpha03 حاوی این commit ها است.
رفع اشکال
- مشکل Fragments در هنگام استفاده از پیشبینی بازگشت که باعث میشد اولین قطعه در پشته پشتی مدیر فرگمنت نادیده گرفته شود و هنگام استفاده از سیستم بازگشت از طریق پیمایش 3 دکمه یا حرکت پیشبینی کننده بازگشت، فعالیت تمام شود، برطرف شد. ( I0664b , b/295231788 )
نسخه 1.7.0-alpha02
9 آگوست 2023
androidx.fragment:fragment-*:1.7.0-alpha02 منتشر شد. نسخه 1.7.0-alpha02 حاوی این commit ها است.
رفع اشکال
- هنگام استفاده از قطعات با اشارههای پیشبینیکننده برگشت از API 34، اگر از سیستم انتقالی استفاده میکنید که از جستجو (
Animations،Transitions) پشتیبانی نمیکند یا اصلاً هیچ انتقالی وجود ندارد، بخشها اکنون منتظر میمانند تا ژست کامل شود و قبل از اجرای اکشن برگشتی. ( I8100c )
نسخه 1.7.0-alpha01
7 ژوئن 2023
androidx.fragment:fragment-*:1.7.0-alpha01 منتشر شد. این نسخه در یک شعبه داخلی توسعه یافته است.
ویژگی های جدید
- بخشها اکنون هنگام استفاده از
Animatorاز Predictive درون برنامه پشتیبانی میکنند. این به شما امکان می دهد قبل از تصمیم به انجام تراکنش از طریق ژست تکمیل شده یا لغو، از ژست برگشت برای دیدن قطعه قبلی با Animator سفارشی خود استفاده کنید. همچنین میتوانید این رفتار جدید را با استفاده ازenablePredictiveBack()آزمایشی و با دادن عبارتfalseغیرفعال کنید.
نسخه 1.6
نسخه 1.6.2
1 نوامبر 2023
androidx.fragment:fragment-*:1.6.2 منتشر شد. نسخه 1.6.2 حاوی این commit ها است.
رفع اشکال
- وقتی Fragment یک
FragmentContainerViewباد میشود، حالات آن مانندFragmentManager، Host و id اکنون در پاسخ به تماسonInflateقابل دسترسی هستند. ( I1e44c , b/307427423 ) - هنگامی که از
clearBackStackبرای حذف مجموعهای از قطعات استفاده میکنید، پس از پاک شدنViewModelsقطعه والد،ViewModelهر قطعه تو در تو پاک میشود. ( I6d83c , b/296173018 )
نسخه 1.6.1
26 جولای 2023
androidx.fragment:fragment-*:1.6.1 منتشر شد. نسخه 1.6.1 حاوی این commit ها است.
رفع اشکال
- مشکلی را برطرف کرد که در آن وضعیت ذخیره شده ذخیره شده در زمان توقف فعالیت اما از بین نرفت، حتی پس از اینکه نمونه قطعه به حالت
RESUMEDبازگردانده شد، به اشتباه در حافظه پنهان ذخیره می شد. این باعث میشود که در صورت استفاده از API پشتههای چندگانه برای ذخیره و بازیابی آن قطعه، از حالت ذخیرهشده مجدداً استفاده شود. ( I71288 , b/246289075 )
به روز رسانی وابستگی
- بخش اکنون به فعالیت 1.7.2 بستگی دارد. این مشکلی را برطرف می کند که در آن کاربران Kotlin نمی توانند
ComponentDialogبدون وابستگی صریح به Activity گسترش دهند. ( b/287509323 )
نسخه 1.6.0
7 ژوئن 2023
androidx.fragment:fragment-*:1.6.0 منتشر شد. نسخه 1.6.0 حاوی این commit ها است.
تغییرات مهم از 1.5.0
- حالت ذخیره شده
Fragments به طور کامل بین حالت کتابخانه خصوصی (کلاس هایParcelableسفارشی) و حالت ارائه شده توسط توسعه دهنده تقسیم شده است، که اکنون همیشه در یکBundleذخیره می شود که امکان تعیین دقیق محل مبدا وضعیت یک قطعه را فراهم می کند. - رابط
FragmentManager.OnBackStackChangedListenerبا دو فراخوان اضافیonBackStackChangeStartedوonBackStackChangeCommittedگسترش یافته است که به ترتیب با هرFragmentدرست قبل از افزودن/حذف از پشته قطعه و بلافاصله پس از انجام تراکنش فراخوانی می شوند. -
FragmentStrictModeیکWrongNestedHierarchyViolationجدید اضافه کرد که تشخیص میدهد چه زمانی یک قطعه فرزند در سلسلهمراتب View والدینش تودرتو شده است، اما بهchildFragmentManagerوالدین اضافه نمیشود. - API های
FragmentوFragmentManagerکه یکIntentیاIntentSenderمی گیرند، اکنون به درستی با@NonNullحاشیه نویسی می شوند تا از ارسال یک مقدار تهی جلوگیری شود، زیرا یک مقدار تهی همیشه فوراً APIهای فریمورک اندروید مربوطه را که این روش ها به آن ها تماس می گیرند، خراب می کند. - اکنون
DialogFragmentدسترسی بهComponentDialogزیرین را از طریق APIrequireComponentDialog()فراهم میکند. - Fragment اکنون به Lifecycle
2.6.1بستگی دارد. - بخش اکنون به SavedState
1.2.1بستگی دارد. - Fragment اکنون به 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 حاوی این commit ها است.
رفع اشکال
- مشکلی که باعث میشود
ActivityResultبا کد درخواست نادرست ارسال شود، هنگامی که چندین درخواستstartActivityForResultبه طور متوالی انجام شده است، رفع شد. ( 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 حاوی این commit ها است.
تغییرات API
- اکنون
DialogFragmentدسترسی بهComponentDialogزیرین را از طریق APIrequireComponentDialog()فراهم میکند. ( I022e3 , b/234274777 ) - API های
commitNow()،executePendingTransactions()وpopBackStackImmediate()با@MainThreadحاشیه نویسی شده اند، به این معنی که اکنون به جای اینکه منتظر شکست در زمان اجرا بمانند، وقتی از رشته اصلی فراخوانی نمی شوند، خطاهای ساخت ایجاد می کنند. ( Ic9665 , b/236538905 )
رفع اشکال
- یک اشکال در
FragmentManagerکه ذخیره و بازیابی در همان فریم میتواند باعث خرابی شود، رفع شد. ( Ib36af , b/246519668 ) - فراخوانهای
OnBackStackChangedListeneronBackStackChangeStartedوonBackStackChangeCommittedاکنون فقط زمانی اجرا میشوند که پشته برگشتیFragmentManagerتغییر کند. ( I66055 , b/274788957 )
نسخه 1.6.0-alpha08
22 مارس 2023
androidx.fragment:fragment-*:1.6.0-alpha08 منتشر شد. نسخه 1.6.0-alpha08 حاوی این commit ها است.
تغییر رفتار
- زمان پاسخ به تماس
OnBackStackChangedListener.onBackStackChangeCommitedبرای اجرا قبل از اجرای عملیات قطعه تنظیم شده است. این تضمین میکند که هیچوقت به یک قطعه که جدا شده است، فراخوان ارسال نمیشود. ( I66a76 , b/273568280 )
رفع اشکال
- از Fragment
1.5.6: مشکلی را برطرف کرد که در آن فراخوانیclearFragmentResultListenerدر یکsetFragmentResultListenerکار نمیکند، اگرLifecycleاز قبلSTARTEDبود و یک نتیجه از قبل در دسترس بود. ( If7458 )
به روز رسانی های وابستگی
- Fragment اکنون به Lifecycle
2.6.1بستگی دارد. ( 586fe7 ) - بخش اکنون به SavedState
1.2.1بستگی دارد. ( 078e4e ) - Fragment اکنون به ProfileInstaller
1.3.0بستگی دارد. ( 3fc05b )
نسخه 1.6.0-alpha07
8 مارس 2023
androidx.fragment:fragment-*:1.6.0-alpha07 منتشر شد. نسخه 1.6.0-alpha07 حاوی این commit ها است.
رفع اشکال
- از Fragment
1.5.6: مشکلی را برطرف کرد که در آن حذف هر بخش، چه موارد منو را اضافه کرده باشد یا نه، منوی فعالیت را باطل میکند. ( 50f098 , b/244336571 )
نسخه 1.6.0-alpha06
22 فوریه 2023
androidx.fragment:fragment-*:1.6.0-alpha06 منتشر شد. نسخه 1.6.0-alpha06 حاوی این commit ها است.
تغییر رفتار
- پاسخ به تماس جدید
onBackStackChangedStartedدرonBackStackChangedListenerFragmentManagerاکنون قبل از اینکه قطعات شروع به حرکت به حالت های هدف خود کنند، اجرا می شود. ( I34726 )
نسخه 1.6.0-alpha05
8 فوریه 2023
androidx.fragment:fragment-*:1.6.0-alpha05 منتشر شد. نسخه 1.6.0-alpha05 حاوی این commit ها است.
ویژگی های جدید
- رابط
FragmentManager.OnBackStackChagnedListenerاکنون دو فراخوان اضافی را ارائه می دهد،onBackStackChangeStartedوonBackStackChangeCommitted، که به اطلاعات بیشتر و کنترل زمانی که تغییرات پشته پشته درFragmentManagerرخ می دهد اجازه می دهد. ( Ib7ce5 , b/238686802 )
تغییرات API
- APIهای
FragmentوFragmentManagerکه یکIntentیاIntentSenderمی گیرند، اکنون به درستی با@NonNullحاشیه نویسی می شوند تا از ارسال یک مقدار تهی جلوگیری شود، زیرا یک مقدار تهی همیشه فوراً APIهای چارچوب Android مربوطه را خراب می کند. ( I06fd4 )
نسخه 1.6.0-alpha04
7 دسامبر 2022
androidx.fragment:fragment-*:1.6.0-alpha04 منتشر شد. نسخه 1.6.0-alpha04 حاوی این commit ها است.
ویژگی های جدید
-
FragmentStrictModeیکWrongNestedHierarchyViolationجدید اضافه کرد که تشخیص میدهد چه زمانی یک قطعه فرزند در سلسلهمراتب View والدینش تودرتو شده است، اما بهchildFragmentManagerوالدین اضافه نمیشود. ( I72521 , b/249299268 )
تغییرات رفتار
- Fragments اکنون وضعیت
SavedStateRegistryخود را قبل ازonAttach()بازیابی میکند و اطمینان حاصل میکند که از همه روشهای چرخه حیات رو به بالا در دسترس است. ( I1e2b1 )
تغییرات API
- آرتیفکت
fragment-testing-manifestورودی های مانیفست را از بقیه اجزای تست قطعه جدا می کند. این بدان معنی است که شما می توانید کارهای زیر را انجام دهید:
debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z")
androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")
این کار از تداخل ناشی از کج بودن نسخه بین fragment-testing و androidx.test جلوگیری می کند. ( I8e534 ، b/128612536 )
رفع اشکال
- از Fragment
1.5.5: بخشها دیگر حالتViewModelرا بهعنوان بخشی از وضعیت ذخیرهشده در رجیستری مشاهده نمیکنند. ( I10d2b , b/253546214 )
نسخه 1.6.0-alpha03
5 اکتبر 2022
androidx.fragment:fragment:1.6.0-alpha03 ، androidx.fragment:fragment-ktx:1.6.0-alpha03 و androidx.fragment:fragment-testing:1.6.0-alpha03 منتشر شدند. نسخه 1.6.0-alpha03 حاوی این commit ها است.
تغییرات API
- کلاسهایی که
DialogFragmentگسترش میدهند، اکنون ملزم به فراخوانی super در overrideهایonDismiss()هستند. ( I14798 , b/238928865 )
رفع اشکال
- رگرسیون های ثابت ناشی از ادغام واسط های پاسخگوی تماس ارائه دهنده جدید (
OnConfigurationChangedProvider،OnMultiWindowModeChangedProvider،OnTrimMemoryProvider،OnPictureInPictureModeChangedProvider) برای اطمینان از اینکه قطعات همیشه تماس های مناسب را دریافت می کنند. ( I9b380 , I34581 , ( I8dfe6 , b/242570955 ), If9d6b , Id0096 , I690b3 , I2cba2 )
نسخه 1.6.0-alpha02
24 آگوست 2022
androidx.fragment:fragment:1.6.0-alpha02 ، androidx.fragment:fragment-ktx:1.6.0-alpha02 و androidx.fragment:fragment-testing:1.6.0-alpha02 منتشر شدند. نسخه 1.6.0-alpha02 حاوی این commit ها است.
رفع اشکال
- از Fragment
1.5.2: مشکلی را برطرف کرد که در آن اجرای همزمانpopBackStack()و یک تراکنشreplace()میتواند باعث شود که قطعات خروجیAnimation/Animatorاشتباه را اجرا کنند. ( Ib1c07 , b/214835303 )
نسخه 1.6.0-alpha01
27 جولای 2022
androidx.fragment:fragment:1.6.0-alpha01 ، androidx.fragment:fragment-ktx:1.6.0-alpha01 و androidx.fragment:fragment-testing:1.6.0-alpha01 منتشر شدند. نسخه 1.6.0-alpha01 حاوی این commit ها است.
تغییرات رفتار
- حالت ذخیره شده
Fragments به طور کامل بین حالت کتابخانه خصوصی (کلاس هایParcelableسفارشی) و حالت ارائه شده توسط توسعه دهنده تقسیم شده است، که اکنون همیشه در یکBundleذخیره می شود که امکان تعیین دقیق محل مبدا وضعیت یک قطعه را فراهم می کند. ( b/207158202 )
رفع اشکال
- از Fragment
1.5.1: یک رگرسیون را درDialogFragmentCallbacksDetectorبرطرف کنید که در آن استفاده از نسخه لینت همراه با AGP 7.4 باعث از کار افتادن پرز می شود. ( b/237567009 )
به روز رسانی وابستگی
- از Fragment
1.5.1: کتابخانه Fragment اکنون به Lifecycle2.5.1بستگی دارد. ( ID204c ) - از Fragment
1.5.1: کتابخانه Fragment اکنون به فعالیت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 حاوی این commit ها است.
رفع اشکال
- استفاده از
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 حاوی این commit ها است.
رفع اشکال
- مشکلی را برطرف کرد که در آن حذف هر بخش، چه موارد منو اضافه کرده باشد یا نه، منوی فعالیت را باطل میکند. ( 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 حاوی این commit ها است.
رفع اشکال
- قطعات دیگر حالت
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 حاوی این commit ها است.
رفع اشکال
- خطای استفاده از
FragmentControllerسفارشی با میزبانی که واسط پاسخ تماس ارائهدهنده را پیادهسازی نمیکند (OnConfigurationChangedProvider،OnMultiWindowModeChangedProvider،OnTrimMemoryProvider،OnPictureInPictureModeChangedProvider) و فراخوانی قطعه قطعه قطعهسازی برای deprecat کردن dispatch، رفع شد. ( 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 حاوی این commit ها است.
رفع اشکال
- خطایی را برطرف کرد که باعث میشد فرگمنتها در پشته پشتی تماسهای
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 حاوی این commit ها است.
رفع اشکال
- مشکلی را برطرف کرد که در آن اجرای همزمان
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 حاوی این commit ها است.
رفع اشکال
- یک رگرسیون را در
DialogFragmentCallbacksDetectorبرطرف کنید که در آن استفاده از نسخه lint همراه با AGP 7.4 باعث از کار افتادن پرزها می شود. ( b/237567009 )
به روز رسانی وابستگی
- کتابخانه Fragment اکنون به Lifecycle
2.5.1بستگی دارد. ( ID204c ) - کتابخانه Fragment اکنون به فعالیت
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 حاوی این commit ها است.
تغییرات مهم از 1.4.0
- CreationExtras Integration -
Fragmentاکنون توانایی ارائهViewModelProvider.Factoryبدون حالت را از طریق Lifecycle2.5.0'sCreationExtrasدارد. - Component Dialog Integration -
DialogFragmentاکنون ازComponentDialogاز طریق Activity1.5.0به عنوان گفتگوی پیش فرض برگردانده شده توسطonCreateDialog()استفاده می کند. - Saved Instance State Refactoring - قطعات شروع به تغییر روش ذخیره حالت نمونه خود کرده اند. این تلاشی است برای کمک به شناسایی واضح وضعیت ذخیره شده در قطعه و منبع حالت. تغییرات فعلی شامل موارد زیر است:
-
FragmentManagerاکنون حالت نمونه ذخیره شده خود را به جای مستقیماً در یکParcelableسفارشی در یکBundleذخیره می کند. - نتایج تنظیم شده از طریق
Fragment Result APIsکه هنوز تحویل داده نشده اند، اکنون جدا از وضعیت داخلیFragmentManagerذخیره می شوند. - وضعیت مرتبط با هر قطعه جداگانه اکنون جدا از وضعیت داخلی
FragmentManagerذخیره می شود، بنابراین به شما امکان می دهد مقدار حالت ذخیره شده مرتبط با یک قطعه جداگانه را با شناسه های منحصر به فرد موجود در گزارش اشکال زداییFragmentمرتبط کنید.
-
سایر تغییرات
-
FragmentStrictModeاکنون این امکان را برای فرگمنت های شخص ثالث خصوصی برای دور زدن جریمه های نقض خاص با استفاده ازallowViolation()با نام کلاس ارائه می دهد. - API های Fragment برای ارائه منو به
ActionBarفعالیت شما منسوخ شده است. API هایMenuHostوMenuProviderاضافه شده در Activity1.4.0یک سطح API معادل قابل آزمایش و آگاه از چرخه حیات را ارائه می دهند که قطعات باید از آن استفاده کنند.
نسخه 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 حاوی این commit ها است.
Refactoring حالت نمونه ذخیره شده
- حالت مرتبط با هر قطعه جداگانه اکنون جدا از وضعیت داخلی
FragmentManagerذخیره می شود، بنابراین به شما امکان می دهد مقدار وضعیت ذخیره شده مرتبط با یک قطعه را با شناسه های منحصر به فرد موجود در گزارش اشکال زدایی Fragment مرتبط کنید. ( 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 حاوی این تعهدات است.
تغییرات API
-
DialogFragmentیک متد جدیدdismissNowاضافه کرده است که ازcommitNowبرای برابری با تابعshowNowاستفاده می کند. توجه داشته باشید که این باعث نمیشود کهDialogفوراً رد شود، بلکه فقط بهصورت همزمان وضعیتFragmentManagerرا بهروزرسانی میکند. ( I15C36 ، B/72644830 )
ذخیره سازی مجدد دولت را ذخیره کرد
-
FragmentManagerاکنون به جای اینکه مستقیماً در یکParcelableسفارشی باشد ، وضعیت ذخیره شده خود را در یکBundleذخیره می کند. این اولین قدم برای ارائه شفافیت اضافی در مورد آنچه در واقع توسط قطعات ذخیره می شود است. ( i93807 ، b/207158202 ) - نتایج تعیین شده از طریق API های نتیجه قطعه که هنوز تحویل داده نشده اند ، اکنون به طور جداگانه از وضعیت داخلی
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 شامل این تعهدات است.
تغییرات API
- sethasoptionsmenu
FragmentsetHasOptionsMenu()کاهش یافته است. برای مدیریت منوها و موارد منوی آنها ، از API های منوی جدید باید به جای آن طبق یادداشت های انتشار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 شامل این تعهدات است.
تغییرات API
- API های قطعه ای برای تهیه منو به
ActionBarفعالیت شما کاهش یافته است زیرا آنها قطعه شما را محکم به فعالیت خود می زنند و در انزوا قابل آزمایش نیستند. API هایMenuHostوMenuProviderدر فعالیت1.4.0-alpha01یک سطح API معادل آگاهانه قابل آزمایش و قابل آزمایش را فراهم می کنند که قطعات باید از آن استفاده کنند. ( 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 شامل این تعهدات است.
تغییرات API
- اکنون می توانید
CreationExtrasبه توابعby viewModels()و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: هنگام استفاده از یک Lambda CustomownerProducerبا عملکرد Lazyby viewModels()، اکنون ازdefaultViewModelProviderFactoryاز آن مالک استفاده می کند اگر یکViewModelProvider.FactoryCustom Custom.fective به جای اینکه همیشه از کارخانه قطعه استفاده کند ارائه نمی شود. ( i56170 ، b/214106513 ) - برای اولین بار از یک
registerForActivityResult()پاسخ به تماس یکFragment، تصادف هنگام دسترسی به یک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 ) - در هنگام استفاده از یک Lambda
ownerProducerCustom با عملکرد Lazyby viewModels()، اکنون از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
- API های
FragmentStrictModeچک های زمان اجرا را ارائه می دهند که به شما امکان می دهد تأیید کنید که برنامه یا کتابخانه های شما به آنها وابسته است ، API های قطعه ای مستهلک نمی نامند. هنگامی که یک تخلف تشخیص داده شد ، می توانید یک پیام ورود به سیستم را چاپ کنید ، شنونده سفارشی خود را تحریک کنید یا برنامه خود را خراب کنید.FragmentStrictMode.Policyکه کنترل می کند چه مواردی را فعال می کند و چه "مجازات ها" را می توان از طریق روش جدیدsetStrictModePolicy()بر روی یکFragmentManagerقطعه کرد. این سیاست در مورد آنFragmentManagerو از نظر انتقادی برای هر مدیران قطعه قطعه که سیاست منحصر به فرد خود را تعیین نمی کنند ، اعمال می شود. برای قطعات به StrictMode مراجعه کنید. FragmentContainerViewاکنون روشیgetFragment()را ارائه می دهد که قطعه ای را که اخیراً به ظرف اضافه شده است ، باز می گرداند. این از همان منطقfindFragmentById()با شناسهFragmentContainerViewاستفاده می کند ، اما اجازه می دهد تا تماس را زنجیر کنید.val navController = binding.container.getFragment<NavHostFragment>().navControllerFragmentScenarioاکنونCloseableاست و به شما امکان می دهد از آن با روشuseکوتلین یا امتحان کردن با منابع استفاده کنید.اضافه شده
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}برای مشخص کردن اینکه آیا انیمیشن استاندارد انتقال فعالیت گرفته شده از موضوع شما در انتقال قطعات را فعال می کند.API آزمایشی
FragmentManager.enableNewStateManager(boolean)حذف شده است و مدیر دولت جدید اکنون تنها گزینه موجود است.
چند پشته پشت
The FragmentManager یک پشته پشتی را که از معاملات قطعه ای که از addToBackStack() حفظ می کند. این به شما امکان می دهد تا با استفاده از مکانیسم های صرفه جویی در حالت با قطعات ، آن معاملات را پاپ کرده و به حالت قبلی برگردانید تا قطعات خود بتوانند وضعیت خود را به درستی بازیابی کنند.
این نسخه با ارائه سه API های جدید FragmentManager : saveBackStack(String name) ، restoreBackStack(String name) و clearBackStack(String name) بر این مکانیسم ها گسترش می یابد. این API ها از همان name addToBackStack() استفاده می کنند تا وضعیت FragmentTransaction و وضعیت هر قطعه ای را که در آن معاملات اضافه شده است ، نجات دهد و به شما امکان می دهد بعداً آن معاملات و قطعات آنها را با وضعیت خود بازیابی کنید. این به شما امکان می دهد با صرفه جویی در پشته پشتی فعلی و بازیابی یک پشته پشتی ذخیره شده ، به طور موثر بین پشته های چند پشتی "مبادله" کنید.
saveBackStack() به طور مشابه با popBackStack() عمل می کند زیرا این امر ناهمزمان است و باعث می شود تمام معاملات قطعه ای به آن نام خاص برگردد تا معکوس شود ("ظاهر شده") و هر قطعه اضافه شده برای از بین بردن و حذف شدن ، اما از چند طریق مهم متفاوت است:
-
saveBackStack()همیشه فراگیر است. - بر خلاف
popBackStack()که اگر نام مشخص شده در پشته پشتی پیدا نشده باشد یا اگر نام تهی پیدا نشده باشد ، تمام معاملات موجود در پشته را پاپ می کند ، اگر قبلاً با استفاده ازaddToBackStack()با آن نام دقیق و غیرقانونی انجام نداده اید ،saveBackStack()کاری انجام نمی دهد. - وضعیت تمام قطعات اضافه شده از آن معاملات ذخیره می شود. این بدان معناست که وضعیت نمای هر قطعه ذخیره می شود ،
onSaveInstanceState()از هر قطعه خوانده می شود و این حالت ترمیم می شود ، و هر نمونهViewModelمرتبط با آن قطعات حفظ می شود (وonCleared()به آنها فراخوانی نمی شود).
معاملات قطعه ای که می تواند با saveBackStack() استفاده شود باید معیارهای خاصی را رعایت کند:
- هر معامله قطعه ای باید از
setReorderingAllowed(true)استفاده کند تا اطمینان حاصل شود که معاملات به عنوان یک عملیات واحد و اتمی قابل ترمیم هستند. - مجموعه معاملات ذخیره شده باید به خود اختصاصی باشد (یعنی آنها نباید صریحاً به قطعات خارج از آن مجموعه معاملات مراجعه کنند) تا اطمینان حاصل شود که می توانند در هر زمان بعدی ترمیم شوند ، مهم نیست که در زمان مداخله چه تغییراتی در پشته پشت ایجاد شده است.
- هیچ قطعه ای که ذخیره شود نمی تواند یک قطعه نگهدارنده باشد یا یک قطعه حفظ شده در مجموعه گذرا از قطعات کودک خود داشته باشد تا اطمینان حاصل شود که
FragmentManagerپس از ذخیره پشته پشت ، هیچ گونه اشاراتی را به قطعات ذخیره شده باز نمی گرداند.
مشابه saveBackStack() ، restoreBackStack() و clearBackStack() ، که می تواند یک پشته که قبلاً ذخیره شده را بازیابی می کند یا به ترتیب یک پشته پشتی ذخیره شده را پاک کرده است ، به ترتیب ، هر دو هیچ کاری انجام نمی دهند اگر قبلاً saveBackStack() با همان نام خوانده نشده باشید.
برای اطلاعات بیشتر ، به چندین پشته پشتی مراجعه کنید: شیرجه عمیق .
نسخه 1.4.0-RC01
3 نوامبر 2021
androidx.fragment:fragment:1.4.0-rc01 بدون تغییر از قطعه 1.4.0-beta01 منتشر شد. نسخه 1.4.0-RC01 شامل این تعهدات است.
نسخه 1.4.0-beta01
27 اکتبر 2021
androidx.fragment:fragment:1.4.0-beta01 ، androidx.fragment:fragment-ktx:1.4.0-beta01 ، و androidx.fragment:fragment-testing:1.4.0-beta01 منتشر می شود. نسخه 1.4.0-beta01 شامل این تعهدات است.
رفع اشکال
- قطعات والدین اکنون قبل از شروع تماس با خود ، کل سلسله مراتب
onHiddenChanged()را در کل سلسله مراتب خود اعزام می کنند. ( IEDC20 ، B/77504618 ) - صفحه کلید اکنون هنگام رفتن از یک قطعه با یک صفحه کلید باز به یک قطعه با نمای بازیافت ، به طور خودکار بسته می شود. ( i8b842 ، b/196852211 )
-
DialogFragmentاکنون برای کلیه معاملات که هنگام تماس با شماshow()،showNow()یاdismiss()ایجاد می کند ، ازsetReorderingAllowed(true)استفاده می کند. ( IE2C14 ) - هشدار بسیار طولانی در مورد
DetachAndAttachFragmentInSameFragmentTransactionبهDetachAndAttachSameFragmentکوتاه شده است. ( e9eca3 )
نسخه 1.4.0-alpha10
29 سپتامبر 2021
androidx.fragment:fragment:1.4.0-alpha10 ، androidx.fragment:fragment-ktx:1.4.0-alpha10 و androidx.fragment:fragment-testing:1.4.0-alpha10 آزاد می شود. نسخه 1.4.0-alpha10 شامل این تعهدات است.
لینت
- هشدار LINT برای تشخیص تماس با
DetachAndAttachFragmentInSameFragmentTransactiondetach()وattach()در همانFragmentTransactionFragmentقطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه شده خیلی خیلی زیاد خیلی زیاد ((((("این سایر عملیات مکمل در صورت انجام) در معاملات جداگانه تقسیم می شوند تا در واقع هر کاری انجام دهند ، اضافه می شود. ( AOSP/1832956 ، b/200867930 ) - خطای خط
FragmentAddMenuProviderقطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعهaddMenuProviderقطعهMenuHostقطعه قطعه اثر مشاهده کرد. ( AOSP/1830457 ، B/200326272 )
به روزرسانی مستندات
- پیام استهلاک برای API که اکنون توسط API های نتیجه فعالیت ، یعنی
startActivityForResult،startIntentSenderForResult،onActivityResult،requestPermissions، وonRequestPermissionsResultانجام شده است ، همه با جزئیات بیشتر گسترش یافته اند. ( CCE80F ) - پیام استهلاک برای
onActivityCreated()برای هر دوFragmentوDialogFragmentبا جزئیات بیشتر گسترش یافته است. ( 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 )
تغییرات API
- کلاس
FragmentContainerViewدر Kotlin بازنویسی شده است و اطمینان می دهد که عملکردgetFragmentبه درستی به باطل احترام می گذارد. ( if694a ، b/189629145 ) - FlatmentStrictMode اکنون در 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 شامل این تعهدات است.
رفع اشکال
- بررسی Lint
UseRequireInsteadOfGetرا بهبود بخشید تا بتواند پرانتز بهتر را انجام دهد. ( I2D865 ) - برای رسیدگی به موارد لبه اضافی ، بررسی LINT
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وقتی پس از ذخیره حالت ، هنگام افزودن به طور خاص دیالوگ از طریق روش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: نمای قطعه اکنون به درستی تنظیم شده است که هنگام استفاده ازhide()هنگامی که نمای ریشه دارای مجموعهtransitionGroup=”true”است ،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 شامل این تعهدات است.
تغییرات API
-
FragmentManagerاکنون برای نجات وضعیت خود ازSavedStateRegistryدر زیر کاپوت استفاده می کند. روشهایsaveAllState()وrestoreSavedState()نیز درFragmentControllerکاهش یافته است. اگر ازFragmentControllerبرای میزبانی قطعات خارج ازFragmentActivityاستفاده می کنید ، بایدFragmentHostCallbacksخود راSavedStateRegistryOwnerاجرا کنید. ( IBA68E ، B/188734238 )
رفع اشکال
- مسئله ای را برطرف کرد که در آن فراخوان برای
saveBackStack()به عنوان بخشی از پشتیبانی از پشته های پشتی چندگانه ، هنگامی که همزمان با اجرای یکFragmentTransactionکه ازreplace()استفاده می شود ، شکست می خورد. ( i73137 ) - رفع یک
NullPointerExceptionکه بعد از بازگرداندن دستی یک پشته ذخیره شده که حاوی معاملات متعدد در هنگام استفاده از APIrestoreBackStack()برای پشتیبانی از پشته های چندگانه است ، رخ می دهد. این مسئله همچنین مسئله ای را برطرف کرد که در آن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 شامل این تعهدات است.
ویژگی های جدید
- تمام کلاسهای
Violationقطعه قطعه قطعه قطعه شده با پیام های خطای دقیق تر که جزئیات این تخلف را توضیح می دهد ، به روز شده است. ( b/187871638 )-
FragmentTagUsageViolationاکنون حاوی پیام خطای مفصلی تر است که ظرف ظرف والدین را که این قطعه به آن اضافه شده است ، کانتینر می کند. ( IC33A7 ) - اکنون
WrongFragmentContainerViolationاکنون پیام خطای مفصلی تری دارد که شامل ظرفی است که این قطعه به آن اضافه شده است. ( IB55F8 ) - کلاسهای مورد استفاده برای
TargetFragmentUsageViolationاکنون پیام های خطای مفصلی دارند که شامل قطعه ای است که باعث تخلف و هرگونه اطلاعات دیگر می شود. ( ICC6AC ) - کلاسهای گسترش
RetainInstanceUsageViolationاکنون پیام های خطای مفصلی دارند که شامل قطعه ای است که باعث تخلف می شود. ( i6bd55 ) -
FragmentReuseViolationاکنون دارای پیام خطای مفصلی تر است که شامل شناسه قبلی این قطعه است. ( i28ce2 ) -
SetUserVisibleHintViolationاکنون دارای پیام خطای مفصلی تر است که شامل آنچه که کاربر قابل مشاهده در آن تنظیم شده است ، شامل می شود. ( IB2D5F )
-
تغییرات رفتار
- محدودیت فراخوانی متناسب با
fitsSystemWindowsرا در یکFragmentContainerViewبرگردانید - این دیگر برنامه شما را خراب نمی کند. ( 6B8DDD ، b/190622202 )
رفع اشکال
- از قطعه
1.3.5: رگرسیون در انتقال عناصر مشترک معرفی شده در قطعه1.3.4توسط AOSP/1679887 . قطعات اکنون به طور صحیح گروه های انتقال را اداره می کنند (یا مستقیماً از طریقtransitionGroup="true"یا به طور غیرمستقیم از طریق یک نام یاbackgroundtransitionName) تنظیم می شوند و عناصر مشترک دیگر شاخصIndexOutOfBoundsExceptionپرتاب نمی کنند. ( I16484 ، b/188679569 ، b/188969304 ) - هنگامی که سعی در پنهان کردن یک قطعه از بین بردن دارید ، دیگر
FragmentManagerخراب نمی شود. ( i573dd ، b/183634730 ) - بررسی LINT
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 )کلاس
ViolationFragmentStrictModeبرای افزودن اطلاعات ساختار بر اساس هر تخلف گسترش یافته است. این به شما امکان می دهد دقیقاً آنچه را که باعث تخلف به همراه قطعه نقض شده شده است تأیید کنید ( IF5118 ، B/187871150 ) ، هرViolationشامل موارد زیر است:- اکنون
WrongFragmentContainerViolationاکنون حاویViewGroupاست که اینFragmentدر تلاش است تا به آن اضافه شود. ( i83c75 ، b/187871150 ) -
TargetFragmentUsageViolationبه ،SetTargetFragmentUsageViolation،GetTargetFragmentUsageViolationوGetTargetFragmentRequestCodeUsageViolationگسترش یافته است ، باSetTargetFragmentUsageViolationحاوی قطعه هدف و کد درخواست. ( i741b4 ، b/187871150 ) -
SetUserVisibleHintViolationاکنون حاوی مقدار بولی است که بهsetUserVisibleHint()منتقل شده است. ( i00585 ، b/187871150 ) -
FragmentTagUsageViolationاکنون حاوی گروه دیدگاه است که برچسب<fragment>در تلاش بود تا یک قطعه را به داخل ببخشد. ( i5dbbc ، b/187871150 ) -
FragmentReuseViolationاکنون حاوی شناسه منحصر به فرد نمونه قبلیFragmentاست که باعث ایجاد ویروس شده است. ( i0544d ، b/187871150 ) -
RetainInstanceUsageViolationدر حال حاضر انتزاعی است و دارای دو زیر کلاس ،SetRetainInstanceUsageViolationوGetRetainInstanceUsageViolationاست که نمایانگر این دو مورد برای نوع تخلف است. ( IC81E5 ، B/187871150 )
- اکنون
تغییرات رفتار
-
FragmentContainerViewاکنون هنگام تلاش برای تغییر ویژگیfitsSystemWindowبه صورت برنامه ای یا از طریق XML ، استثنائی را به وجود می آورد. insets باید توسط دیدگاه هر قطعه جداگانه انجام شود. ( IE6651 ، b/187304502 )
نسخه 1.4.0-alpha01
18 مه 2021
androidx.fragment:fragment:1.4.0-alpha01 ، androidx.fragment:fragment-ktx:1.4.0-alpha01 و androidx.fragment:fragment-testing:1.4.0-alpha01 آزاد می شود. نسخه 1.4.0-alpha01 شامل این تعهدات است.
ویژگی های جدید
FragmentContainerViewاکنون روشیgetFragment()را ارائه می دهد که قطعه ای را که اخیراً به ظرف اضافه شده است ، باز می گرداند. این از همان منطقfindFragmentById()با شناسهFragmentContainerViewاستفاده می کند ، اما اجازه می دهد تا تماس را زنجیر کنید. ( IFE17A ، B/162527857 )val navController = binding.container.getFragment<NavHostFragment>().navControllerاضافه شده
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}برای مشخص کردن اینکه آیا انیمیشن استاندارد انتقال فعالیت گرفته شده از موضوع شما در انتقال قطعات را فعال می کند. ( i46652 )
چند پشته پشت
The FragmentManager یک پشته پشتی را که از معاملات قطعه ای که از addToBackStack() حفظ می کند. این به شما امکان می دهد تا با استفاده از مکانیسم های صرفه جویی در حالت با قطعات ، آن معاملات را پاپ کرده و به حالت قبلی برگردانید تا قطعات خود بتوانند وضعیت خود را به درستی بازیابی کنند.
این نسخه با ارائه دو API های جدید FragmentManager : saveBackStack(String name) و restoreBackStack(String name) بر این مکانیسم ها گسترش می یابد. این API ها از همان name addToBackStack() استفاده می کنند تا وضعیت FragmentTransaction و وضعیت هر قطعه ای را که در آن معاملات اضافه شده است ، نجات دهد و به شما امکان می دهد بعداً آن معاملات و قطعات آنها را با وضعیت خود بازیابی کنید. این به شما امکان می دهد با صرفه جویی در پشته پشتی فعلی و بازیابی یک پشته پشتی ذخیره شده ، به طور موثر بین پشته های چند پشتی "مبادله" کنید.
saveBackStack() به طور مشابه با popBackStack() عمل می کند زیرا این امر ناهمزمان است و باعث می شود تمام معاملات قطعه ای به آن نام خاص برگردد تا معکوس شود ("ظاهر شده") و هر قطعه اضافه شده برای از بین بردن و حذف شدن ، اما از چند طریق مهم متفاوت است:
-
saveBackStack()همیشه فراگیر است. - بر خلاف
popBackStack()که اگر نام مشخص شده در پشته پشتی پیدا نشده باشد یا اگر نام تهی پیدا نشده باشد ، تمام معاملات موجود در پشته را پاپ می کند ، اگر قبلاً با استفاده ازaddToBackStack()با آن نام دقیق و غیرقانونی انجام نداده اید ،saveBackStack()کاری انجام نمی دهد. - وضعیت تمام قطعات اضافه شده از آن معاملات ذخیره می شود. این بدان معناست که وضعیت نمای هر قطعه ذخیره می شود ،
onSaveInstanceState()از هر قطعه خوانده می شود و این حالت ترمیم می شود ، و هر نمونهViewModelمرتبط با آن قطعات حفظ می شود (وonCleared()به آنها فراخوانی نمی شود).
معاملات قطعه ای که می تواند با saveBackStack() استفاده شود باید معیارهای خاصی را رعایت کند:
- هر معامله قطعه ای باید از
setReorderingAllowed(true)استفاده کند تا اطمینان حاصل شود که معاملات به عنوان یک عملیات واحد و اتمی قابل ترمیم هستند. - مجموعه معاملات ذخیره شده باید به خود اختصاصی باشد (یعنی آنها نباید صریحاً به قطعات خارج از آن مجموعه معاملات مراجعه کنند) تا اطمینان حاصل شود که می توانند در هر زمان بعدی ترمیم شوند ، مهم نیست که در زمان مداخله چه تغییراتی در پشته پشت ایجاد شده است.
- هیچ قطعه ای که ذخیره شود نمی تواند یک قطعه نگهدارنده باشد یا یک قطعه حفظ شده در مجموعه گذرا از قطعات کودک خود داشته باشد تا اطمینان حاصل شود که
FragmentManagerپس از ذخیره پشته پشت ، هیچ گونه اشاراتی را به قطعات ذخیره شده باز نمی گرداند.
مشابه saveBackStack() ، restoreBackStack() اگر قبلاً saveBackStack() با همین نام خوانده نشده اید ، هیچ کاری نمی کند. ( b/80029773 )
قطعه قطعه قطعه قطعه شده
API های FragmentStrictMode چک های زمان اجرا را ارائه می دهند که به شما امکان می دهد تأیید کنید که برنامه یا کتابخانه های شما به آنها وابسته است ، API های قطعه ای مستهلک نمی نامند. هنگامی که یک تخلف تشخیص داده شد ، می توانید یک پیام ورود به سیستم را چاپ کنید ، شنونده سفارشی خود را تحریک کنید یا برنامه خود را خراب کنید. FragmentStrictMode.Policy که کنترل می کند چه مواردی را فعال می کند و چه "مجازات ها" را می توان از طریق روش جدید setStrictModePolicy() بر روی یک FragmentManager قطعه کرد. این سیاست در مورد آن FragmentManager و از نظر انتقادی برای هر مدیران قطعه قطعه که سیاست منحصر به فرد خود را تعیین نمی کنند ، اعمال می شود. ( #123 ، #131 ، #150 ، b/143774122 )
-
detectFragmentReuse()تشخیص می دهد که آیا یک نمونهFragmentکه قبلاً حذف شده است دوباره به یکFragmentManagerداده می شود. شما هرگز نباید پس از نابودی و حذف از یکFragmentManager، با یک نمونهFragmentارتباط برقرار کنید و یا از آن استفاده کنید. ( #142 ، b/153738653 ) -
detectFragmentTagUsage()هنگام استفاده از برچسب<fragment>در طرح XML خود را تشخیص می دهد. شما همیشه باید هنگام تورم قطعات به عنوان بخشی از طرح خودFragmentContainerViewاستفاده کنید. ( #141 ، b/153738235 ) -
detectWrongFragmentContainer()هنگامی که یک قطعه را به یک ظروف اضافه می کنید که یک قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعهFragmentContainerViewاست ، تشخیص می دهد. شما همیشه باید ازFragmentContainerViewبه عنوان ظرف برای قطعات موجود در طرح خود استفاده کنید. ( #146 ، b/181137036 ) -
detectRetainInstanceUsage()هنگام استفاده از API هایsetRetainInstance()یاgetRetainInstance()استفاده می کنید. ( #140 ، b/153737954 ) -
detectSetUserVisibleHint()هنگام استفاده از API ازsetUserVisibleHint()استفاده می کنید. ( #136 ، b/153738974 ) -
detectTargetFragmentUsage()هنگام استفاده از APIS ازsetTargetFragment()،getTargetFragment()یاgetTargetRequestCode()استفاده می کنید. ( #139 ، b/153737745 )
تغییرات API
- API آزمایشی
FragmentManager.enableNewStateManager(boolean)حذف شده است و مدیر دولت جدید اکنون تنها گزینه موجود است. ( i90036 ، b/162776418 ) -
FragmentScenarioاکنونCloseableاست و به شما امکان می دهد از آن با روشuseکوتلین یا امتحان کردن با منابع استفاده کنید. ( #121 ، b/143774122 )
چک های جدید
- بررسی LINT
UseGetLayoutInflaterاکنون هنگام استفاده ازLayoutInflater.from(Context)در یکDialogFragmentهشدار می دهد - همیشه باید از روشgetLayoutInflater()قطعه دیالوگ استفاده کنید تا مناسب برایLayoutInflaterبدست آورید. ( #156 ، b/170781346 ) - بررسی LINT
DialogFragmentCallbacksDetectorاکنون هشدار می دهد که هنگام تماسsetOnCancelListenerیاsetOnDismissListenerدر روشonCreateDialog()روشDialogFragment- این شنوندگان متعلق به خودDialogFragmentاست و شما بایدonCancel()وonDismiss()را نادیده بگیرید تا این تماس تلفنی را دریافت کنید. ( #171 ، b/181780047 ، b/187524311 )
رفع اشکال
- از قطعه 1.3.4 : رگرسیون معرفی شده در قطعه
1.3.3هنگام استفاده ازViewTreeViewModelStoreOwner.get()API باViewModelProviderیا روش JetPack ازviewModel()در داخل یک قطعه. این موارد استفاده اکنون به درستی ازViewModelProvider.Factoryارائه شده توسط قطعه شما در صورت غلبه برgetDefaultViewModelProviderFactory()استفاده می کند (به عنوان@AndroidEntryPointقطعات حاشیه نویسی هنگام استفاده از HILT). اگر این روش را نادیده نگیرید ، یکSavedStateViewModelFactoryکه وضعیت خود را در کنار دیدگاه این قطعه ذخیره و بازیابی می کند ، به عنوان کارخانه پیش فرض ایجاد می شود. ( i5cbfa ، b/186097368 ) - از قطعه 1.3.4 : هنگام استفاده از
FragmentContainerViewدر API 29 ، insets دیگر به طور نامحدودی اعزام نمی شود و مشکلات مربوط به مواردBottomNavigationBarوFloatingActionButtonبرطرف می کند. ( i1bb78 ، b/186012452 ) - از قطعه 1.3.4 : اکنون می توانید پس از مرگ فرآیند ، بسته نرم افزاری حاصل از قطعه قطعه قطعه قطعه شده خود را بازیابی کنید. ( i65932 ، b/187443158 )
- از قطعه 1.3.4 : هنگام انجام یک انتقال عنصر مشترک در یک گروه View ، اگر گروه ViewGroup دارای
transitionGroupبه False باشد ، اکنون به درستی در حال انتقال است. ( i99675 )
مشارکت خارجی
- با تشکر از سیمونشیلر برای ساخت
FragmentScenarioکهCloseable. ( #121 ، b/143774122 ) - با تشکر از سیمونشیلر برای افزودن کلیت API
FragmentStrictModeبرای این نسخه! ( #123 ، #131 ، #150 ، b/143774122 ، #142 ، b/153738653 ، #141 ، b/153738235 ، #146 ، b/181137036 ، #140 ، b / 153737954 ، #136 ، #136 ، #136 ، #136 ، #136 ، b/153738974 ، #139 ، b/153737745 ) - با تشکر از Tatocaster برای اضافه کردن بررسی LINT
UseGetLayoutInflater. ( #156 ، b/170781346 ) - با تشکر از Tatocaster برای اضافه کردن
DialogFragmentCallbacksDetectorLINT. ( #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 شامل این تعهدات است.
رفع اشکال
- یک رگرسیون در انتقال عناصر مشترک معرفی شده در قطعه
1.3.4توسط AOSP/1679887 . قطعات اکنون به طور صحیح گروه های انتقال را اداره می کنند (یا مستقیماً از طریقtransitionGroup="true"یا به طور غیرمستقیم از طریق یک نام یاbackgroundtransitionName) تنظیم می شوند و عناصر مشترک دیگر شاخصIndexOutOfBoundsExceptionپرتاب نمی کنند. ( I16484 ، b/188679569 ، b/188969304 )
نسخه 1.3.4
18 مه 2021
androidx.fragment:fragment:1.3.4 ، androidx.fragment:fragment-ktx:1.3.4 ، و androidx.fragment:fragment-testing:1.3.4 منتشر می شود. نسخه 1.3.4 شامل این تعهدات است.
رفع اشکال
- رفع رگرسیون معرفی شده در قطعه
1.3.3هنگام استفاده ازViewTreeViewModelStoreOwner.get()API باViewModelProviderیا روش JetPack ازviewModel()در داخل یک قطعه هنگام استفاده از HILT. این موارد استفاده اکنون به درستی ازViewModelProvider.Factoryارائه شده توسط قطعه شما در صورت غلبه برgetDefaultViewModelProviderFactory()(همانطور که@AndroidEntryPointقطعات حاشیه نویسی انجام می دهند) استفاده می کنند. اگر این روش را نادیده نگیرید ، یکSavedStateViewModelFactoryکه وضعیت خود را در کنار دیدگاه این قطعه ذخیره و بازیابی می کند ، به عنوان کارخانه پیش فرض ایجاد می شود. ( i5cbfa ، b/186097368 ) - هنگام استفاده از
FragmentContainerViewدر API 29 ، Insets دیگر به طور نامحدود اعزام نمی شود و مشکلات مربوط بهBottomNavigationBarوFloatingActionButtonرا برطرف می کند. ( i1bb78 ، b/186012452 ) - اکنون می توانید پس از مرگ فرآیند ، بسته نرم افزاری خود را از بسته نتیجه قطعه بازیابی کنید. ( i65932 ، b/187443158 )
- هنگام انجام یک انتقال عناصر مشترک در یک گروه View ، اگر ViewGroup دارای
transitionGroupبه False باشد ، اکنون به درستی انتقال خواهد یافت. ( i99675 )
نسخه 1.3.3
21 آوریل 2021
androidx.fragment:fragment:1.3.3 ، androidx.fragment:fragment-ktx:1.3.3 ، و androidx.fragment:fragment-testing:1.3.3 منتشر می شود. نسخه 1.3.3 شامل این تعهدات است.
ویژگی های جدید
- با استفاده از
SavedStateViewModelFactoryاکنون هنگام استفاده ازSavedStateRegistryOwnerبا استفاده ازViewTreeSavedStateRegistryOwner.get()با دیدگاه این قطعه استفاده می شود. ( I21ACF ، B/181577191 )
رفع اشکال
- رگرسیون معرفی شده در قطعه
1.3.2را برطرف کرد که باعث می شود انیمیشن هایpopEnterهنگام استفاده از یک قطعهFragmentTransactionکه شامل یک عملیاتsetPrimaryNavFragmentاست ، مانند مواردی که توسطNavHostFragmentاستفاده می شود ، اجرا شود. ( i38c87 ، b/183877426 ) -
FragmentContainerViewاکنون تضمین می کند که هرFragmentمجموعه جدیدی ازWindowInsetsرا اعزام می کند ، و اطمینان می دهد که هر قطعه اکنون می تواند به طور مستقل از آن استفاده کند. ( i63f68 ، b/172153900 ) -
DialogFragmentاکنون به درستی مواردی را انجام می دهد که یک قطعه کودک به یک ظروف اضافه شده است که دارای همان شناسه در کلاسDialogسفارشی شما است ، و در هنگام استفاده مجدد از شناسه هایی که از طریق دیالوگ هایی مانندBottomSheetDialogاستفاده می شود ، مسائل سلسله مراتبی را برطرف می کند. ( IE6279 ، b/180021387 ) -
FragmentManager.dump()اکنون به درستی اولین قطعه در لیست قطعات فعال را نشان می دهد. ( IF5C33 ، B/183705451 )
رفع اشکال مدیر دولت جدید
- مدیر دولت جدید Fragment اکنون به درستی انتقال های خروج را با عملیات پنهان انجام می دهد. ( 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 بستگی دارد ، و مسئله ای را با استفاده از قطعه
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 شامل این تعهدات است.
ویژگی های جدید
- Dialogs within a
DialogFragmentcan now get access to ViewTree owners through their DecorView, ensuring thatDialogFragmentcan be used withComposeView. ( Ib9290 , b/180691023 )
رفع اشکال
- Fragments inflated into an already
RESUMEDactivity using FragmentContainerView are now properly shown after a configuration change. ( Ie14c8 , b/180538371 ) - There is no longer an extra
}at the end of the fragmenttoString()( I54705 , b/177761088 ) - Overridden methods in FragmentActivity now properly inherit the base method javaDoc ( I736ce , b/139548782 )
- The docs for
setFragmentResultandsetFragmentResultListenerhave updated their parameters docs to reflect that they no longer accept nullables ( I990ba , b/178348386 )
New State Manager Bug Fixes
- Fixed a memory leak in fragments caused by
mFocusedView( Ib4e9e , b/179925887 ) - Fragments now properly call
onCreateOptionsMenuwhen using show/hide transactions ( I8bce8 , b/180255554 ) - Child fragments with transitions that start prior to the fragment being laid out will now properly reach
RESUMED( Ic11e6 , b/180825150 ) - Fragments inflated using the
<fragment>tag will now always make it toRESUMED( I452ac , ( I9fa49 )
Dependency Updates
- Fragment 1.3.1 depends on Activity
1.2.1. ( I557b9 )
نسخه 1.3.0
10 فوریه 2021
androidx.fragment:fragment:1.3.0 , androidx.fragment:fragment-ktx:1.3.0 , and androidx.fragment:fragment-testing:1.3.0 are released. نسخه 1.3.0 شامل این تعهدات است.
Major changes since 1.2.0
- New State Manager : A significant rewrite of the internals of
FragmentManagerhas fixed numerous issues around the dispatch of lifecycle events, animations and transitions, and how postponed fragments are handled. Activity Result API Integration : Added support for the
ActivityResultRegistryAPI introduced in Activity1.2.0to handlestartActivityForResult()+onActivityResult()as well asrequestPermissions()+onRequestPermissionsResult()flows without overriding methods in your Fragment in addition to providing hooks for testing these flows. See the updated Getting a Result from an Activity .- This release fixes a number of issues around invalid request codes and the dispatch of permission requests that prevent the Activity Result API from working on previous versions of
FragmentActivity. You must upgrade to Fragment 1.3.0 to use the Activity Result APIs in aFragmentActivityorAppCompatActivity.
- This release fixes a number of issues around invalid request codes and the dispatch of permission requests that prevent the Activity Result API from working on previous versions of
Fragment Result API : Added support for passing results between two Fragments via new APIs on
FragmentManager. This works for hierarchy fragments (parent/child), DialogFragments, and fragments in Navigation and ensures that results are only sent to your Fragment while it is at leastSTARTED. The target fragment APIs have been deprecated in favor of these new APIs. See Get Results using the Fragment Result API .FragmentOnAttachListener: TheonAttachFragment()callback onFragmentActivityandFragmenthave been deprecated. A newFragmentOnAttachListenerhas been added to provide a more flexible alternative, allowing delegation ofonAttachFragment()to separate, testable listeners and support for adding a listener to FragmentManagers other than your direct child FragmentManager.FragmentScenarioImprovements : TheFragmentScenarioclass from thefragment-testingartifact has been rewritten in Kotlin and has received a number of improvements:-
FragmentScenarionow usessetMaxLifecycle()to implementmoveToState(), ensuring consistent behavior on all API levels and decoupling the Fragment's state from the underlying Activity. -
FragmentScenarionow supports setting an initialLifecycle.Stateto support asserting the fragment's state before moving to eachLifecycle.Statefor the first time. - There is now an alternative to the
FragmentScenarioAPI ofonFragmentin the form of the Kotlin reified extension methodwithFragmentthat allows you to return a value. Notably, it rethrows exceptions raised in the given block.
-
ViewTreeSupport :Fragmentnow supports theViewTreeLifecycleOwner.get(View),ViewTreeViewModelStoreOwner.get(View), andViewTreeSavedStateRegistryOwnerAPIs added in Lifecycle2.3.0and SavedState1.1.0such that it will return the Fragment as theViewModelStoreOwner, and aSavedStateRegistryOwnerandLifecycleOwnertied to the fragment's view Lifecycle when using aViewwithin aFragment.TRANSIT_animation changes : The fragment default effects,TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSE, andTRANSIT_FRAGMENT_FADE, now useAnimatorinstead ofAnimation. The resources used to build these animators are now private.setRetainInstance()deprecation : ThesetRetainInstance()method on Fragments has been deprecated. With the introduction of ViewModels , developers have a specific API for retaining state that can be associated with Activities, Fragments, and Navigation graphs. This allows developers to use a normal, not retained Fragment and keep the specific state they want retained separate, avoiding a common source of leaks while maintaining the useful properties of a single creation and destruction of the retained state (namely, the constructor of theViewModeland theonCleared()callback it receives).ViewPager 1 adapter deprecation : With the release of ViewPager2
1.0.0, theFragmentPagerAdapterandFragmentStatePagerAdapterclasses for interacting withViewPagerhave been deprecated. See Migrate from ViewPager to ViewPager2 .
Version 1.3.0-rc02
27 ژانویه 2021
androidx.fragment:fragment:1.3.0-rc02 , androidx.fragment:fragment-ktx:1.3.0-rc02 , and androidx.fragment:fragment-testing:1.3.0-rc02 are released. Version 1.3.0-rc02 contains these commits.
رفع اشکال
- Fixed an issue where a parent
DialogFragmentwould appear above a childDialogFragmentafter a configuration change; child dialog fragments now always appear above a parent dialog fragment. ( I30806 , b/177439520 ) - Fixed issue where doing a
hideoperation with anAnimationwould cause the hiding fragment to flash at the end of the animation. ( I57e22 , b/175417675 ) - Fragments with transitions added before the view hierarchy is attached now properly reach
RESUMED. ( I1fc1d , b/177154873 )
New State Manager Bug Fixes
- The Fragment's view
Lifecyclenow properly handles cases where the Fragment's view is destroyed before theLifecyclereachesCREATED, avoiding exceptions stating “no event down from INITIALIZED”. ( eda2bd , b/176138645 ) - Fragments that use an
Animatornow appear in the proper order when usingFragmentContainerView. ( Id9aa3 , b/176089197 )
نسخه 1.3.0-RC01
16 دسامبر 2020
androidx.fragment:fragment:1.3.0-rc01 , androidx.fragment:fragment-ktx:1.3.0-rc01 , and androidx.fragment:fragment-testing:1.3.0-rc01 are released. Version 1.3.0-rc01 contains these commits.
رفع اشکال
-
onPrepareOptionsMenu()now follows the same logic asonCreateOptionsMenu()and is no longer called when a parent fragment callssetMenuVisibility(false). ( Id7de8 , b/173203654 )
New State Manager Bug Fixes
- Fixed leak and visual artifact when adding a fragment with an
Animationto aFragmentContainerViewand then interrupting that addition with a pop operation. ( I952d8 ) - Fixed an issue where the fragment's view would remain in the view hierarchy if it was replaced during its
onCreate()oronViewCreated()methods. ( I8a7d5 ) - Focus is now properly restored to Fragment root views when they are resumed. ( Ifc84b )
- Combining pop and replace operations in the same fragment transaction will now show the proper animations ( Ifd4e4 , b/170328691 )
نسخه 1.3.0-beta02
2 دسامبر 2020
androidx.fragment:fragment:1.3.0-beta02 , androidx.fragment:fragment-ktx:1.3.0-beta02 , and androidx.fragment:fragment-testing:1.3.0-beta02 are released. نسخه 1.3.0-beta02 شامل این تعهدات است.
ویژگی های جدید
-
FragmentScenariohas been fully converted to Kotlin while maintaining source and binary compatibility via usage of Kotlin 1.4's functional interfaces forFragmentAction. ( I19d31 )
تغییرات رفتار
- FragmentContainerViews that do not inflate a fragment using the
classorandroid:nameattribute can now be used outside of aFragmentActivity. ( Id4397 , b/172266337 ) - Attempting to set the max lifecycle of a fragment to
DESTROYEDwill now throw anIllegalArgumentException( Ie7651 , b/170765622 ) - Initializing a FragmentScenario with a
DESTROYEDstate will now throw anIllegalArgumentException( I73590 , b/170765622 )
New State Manager Bug Fixes
- Fixed an issue where the view would not reach its final state if you interrupt a fragment transition that was using an
Animatoror one of theTRANSIT_FRAGMENT_options. ( I92426 , b/169874632 ) - Fixed an issue that prevented fragments with an exiting
Animationfrom being properly destroyed. ( I83d65 ) - Exiting fragments that have their effects reversed now correctly cancel and restart with the proper entering effect. ( I62226 , b/167092035 )
- Fixed an issue where the exit
Animatorof ahide()would not run. ( Id7ffe ) - Fragments now properly appear when postponed and then immediately started. ( Ie713b , b/170022857 )
- Fragments that remove their focused view during an animation will no longer attempt to restore the focus on the detached view once they reach
RESUMED( I38c65 , b/172925703 )
مشارکت خارجی
-
FragmentFactorynow caches fragment classes separately for differentClassLoaderinstances. Thanks Simon Schiller! ( #87 , b/113886460 )
نسخه 1.3.0-beta01
1 اکتبر 2020
androidx.fragment:fragment:1.3.0-beta01 , androidx.fragment:fragment-ktx:1.3.0-beta01 , and androidx.fragment:fragment-testing:1.3.0-beta01 are released. نسخه 1.3.0-beta01 شامل این تعهدات است.
ویژگی های جدید
-
setMaxLifecycle()now supports setting theLifecyclestate toINITIALIZINGas long as the fragment has not been moved toCREATED. ( b/159662173 )
تغییرات API
- Upgrade androidx to use Kotlin 1.4 ( Id6471 , b/165307851 , b/165300826 )
تغییرات رفتار
- Fragment resource files have been correctly made private. ( aosp/1425237 )
رفع اشکال
- Fragments inflated using the
<fragment>tag will now properly wait until their views are added to a container before moving to STARTED ( I02f4c ) - Fragments that are visible and then
setMaxLifecycle()toCREATEDnow properly run their exit effects. ( b/165822335 ) - Removing a detached fragment that is not added to the back stack no longer causes a memory leak. Courtesy of Nicklas Ansman Giertz! ( b/166489383 )
- Active fragments will now always have a non-null
FragmentManagerand fragments with a non-nullFragmentManagerwill always be considered active. ( aosp/1422346 ) - The fragment default effects,
TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSE, andTRANSIT_FRAGMENT_FADE, now useAnimatorinstead ofAnimation. ( b/166155034 )
New State Manager Bug Fixes
- Fragments now properly restore their view focus state from right before they start their animation. ( Icc256 )
- Fragments that only have a shared element transition now properly complete their special effects meaning they actually move to their final state ( Iaebc7 , b/166658128 )
- Fragment views are now always removed from the container before being destroyed. ( Id5876 )
- The new state manager now consistently removes the exiting fragment view before adding the entering one. ( I41a6e )
- Explicit changes to a fragment view's visibility are now respected by the new state manager. This means that if you set an entering fragment's view to
INVISIBLEbefore the animation begins, it will actually stay invisible. ( b/164481490 ) - Fragments now prioritize
AnimatorsoverAnimations, meaning a fragment with both will only run theAnimatorand ignore theAnimation. ( b/167579557 ) - The new state manager no longer causes fragments to flash when using entering animations. ( b/163084315 )
موضوع شناخته شده
When using the new state manager, if you press back during an entering special effect instead of returning to the previous fragment, the old fragment is never re-added, resulting in a blank screen. ( b/167259187 , b/167092035 , b/168442830 )
Version 1.3.0-alpha08
19 آگوست 2020
androidx.fragment:fragment:1.3.0-alpha08 , androidx.fragment:fragment-ktx:1.3.0-alpha08 , and androidx.fragment:fragment-testing:1.3.0-alpha08 are released. Version 1.3.0-alpha08 contains these commits.
New State Manager
This release includes a major refactoring of the internal state management of FragmentManager which affects the dispatch of lifecycle methods, animations and transitions, and how postponed transactions are handled. این به طور پیش فرض فعال است. See the Fragments: Rebuilding the Internals blog post for more details. ( b/139536619 , b/147749580 )
- An experimental API in
FragmentManager.enableNewStateManager(boolean)can be used to control whether FragmentManager uses the new state manager. ( I7b6ee )
The following issues are fixed only when using the new state manager:
- The previous fragment of a
replaceoperation is now correctly stopped before the new fragment is started. ( b/161654580 ) - Fragments now prevent multiple competing animations on the same fragments, avoiding cases where an
Animationwould override allTransitioneffects or anAnimatorand aTransitionon an individual fragment would both run. ( b/149569323 ) - The
enterTransitionandexitTranstionof all fragments entering and exiting are now ran rather than only the last entering fragment and the first exiting fragment. ( b/149344150 ) - Postponed fragments no longer get stuck at the
CREATEDstate but instead move toSTARTEDwith other fragments. ( b/129035555 ) - Fixed an issue where
FragmentManagerwould execute operations out of order when mixing a postponed re-ordered transaction and a non-reordered transaction. ( b/147297731 ) - Popping multiple fragments simultaneously will no longer result in intermediate fragments being temporarily visible when postponing fragments. ( b/37140383 )
-
FragmentManagernow returns the correct fragments when callingfindFragmentById()orfindFragmentByTag()from within theonAttachFragment()callback. ( b/153082833 ) - Fragments no longer call
onCreateView()on fragments being destroyed when the fragment replacing them is postponed. ( b/143915710 ) - The error message when attempting to combine framework
Transitionand AndroidXTransitioninstances now mentions the fragment with the invalid transition. ( b/155574969 )
تغییرات رفتار
- You can now call
launch()on anActivityResultLauncherin theonCreate()lifecycle method of a fragment. ( b/161464278 ) - Calling
registerForActivityResult()afteronCreate()now throws an exception indicating that this is not allowed rather than silently failing to deliver results after a configuration change. ( b/162255449 ) -
FragmentActivitynow uses theOnContextAvailableListenerAPI introduced in Activity1.2.0-alpha08to restore the state of theFragmentManager. Any listeners added to subclasses ofFragmentActivitywill run after this listener. ( I513da )
رفع اشکال
-
ActivityOptionspassed through when usingstartIntentSenderForResult()are now respected. ( b/162247961 )
موضوع شناخته شده
- When using the new state manager, directly setting the visibility of the fragment's root view after
onViewCreated()and beforeonResume()results in the visibility you set being overridden byFragmentManager, who controls the visibility of the root view. As a workaround, you should always use thehide()andshow()operations to change the visibility of your fragment. ( b/164481490 )
Version 1.3.0-alpha07
22 جولای 2020
androidx.fragment:fragment:1.3.0-alpha07 , androidx.fragment:fragment-ktx:1.3.0-alpha07 , and androidx.fragment:fragment-testing:1.3.0-alpha07 are released. Version 1.3.0-alpha07 contains these commits.
ویژگی های جدید
-
FragmentScenarionow supports setting an initial Lifecycle state ofCREATED,STARTED, orRESUMEDrather than always moving the Fragment to theRESUMEDstate. ( b/159662750 ) - Added an alternative to the
FragmentScenarioAPI ofonFragmentin the form of the Kotlin reified extension methodwithFragmentthat allows you to return a value. Notably, it rethrows exceptions raised in the given block. ( b/158697631 )
تغییرات رفتار
-
FragmentScenarionow usessetMaxLifecycle()to implementmoveToState(), ensuring consistent behavior on all API levels and decoupling the Fragment's state from the underlying Activity. ( b/156527405 ) - The
SavedStateRegistryOwnerreturned byViewTreeSavedStateRegistryOwneris now tied to the fragment view's Lifecycle. This ensures that it has its state saved and restore at the same time as the fragment's view. ( b/158503763 )
رفع اشکال
- Fragments now wait for the fragment's view to be attached before calling
ViewCompat.requestApplyInsets(), avoiding cases where the inset request was being dropped. ( b/158095749 ) - Calling
clearFragmentResultListenernow properly clears the lifecycle observer. ( b/159274993 )
Version 1.3.0-alpha06
10 ژوئن 2020
androidx.fragment:fragment:1.3.0-alpha06 , androidx.fragment:fragment-ktx:1.3.0-alpha06 , and androidx.fragment:fragment-testing:1.3.0-alpha06 are released. Version 1.3.0-alpha06 contains these commits.
ویژگی های جدید
- The
onAttachFragment()callback onFragmentActivityandFragmenthave been deprecated. A newFragmentOnAttachListenerhas been added to provide a more flexible alternative, allowing delegation ofonAttachFragment()to separate, testable listeners and support for adding a listener to FragmentManagers other than your direct child FragmentManager. ( I06d3d )
رفع اشکال
- Parent fragments now have their view state restored before their child fragments, fixing a visual ordering issue after a configuration change when a
DialogFragmentwould show anotherDialogFragmentas a child fragment. ( b/157195715 ) - Fixed an issue where the
UseRequireInsteadOfGetLint check would not handle chained usages of the?.and!!operators correctly. ( b/157677616 )
Version 1.3.0-alpha05
20 مه 2020
androidx.fragment:fragment:1.3.0-alpha05 , androidx.fragment:fragment-ktx:1.3.0-alpha05 , and androidx.fragment:fragment-testing:1.3.0-alpha05 are released. Version 1.3.0-alpha05 contains these commits.
ویژگی های جدید
- Added support for
ViewTreeViewModelStoreOwnerfrom Lifecycle2.3.0-alpha03, andViewTreeSavedStateRegistryOwnerfrom SavedState1.1.0-alpha01when using aViewwithin aFragment. ( aosp/1297993 , aosp/1300264 )
تغییرات API
- The
setFragmentResult()andsetFragmentResultListener()APIs now take a non-nullBundleandFragmentResultListener, respectively. To explicitly clear a previously set result or listener, use the newclearFragmentResult()andclearFragmentResultListener()methods. ( b/155416778 ) - The
setFragmentResultListener()Kotlin extensions that take a lambda are now marked asinline. ( b/155323404 )
تغییرات رفتار
- The previously deprecated
startActivityForResult(),startIntentSenderForResult(), andrequestPermissionsonFragmentnow internally useActivityResultRegistry, thus removing the restriction on using only the lower bits (below0xFFFF) for your request codes when using those APIs. ( b/155518741 )
Documentation Updates
- Expanded the documentation on the
Fragment(@LayoutRes int)andDialogFragment(@LayoutRes int)constructors to clarify that they should be called from your subclasses' no argument constructor when using the defaultFragmentFactory. ( b/153042497 )
Version 1.3.0-alpha04
29 آوریل 2020
androidx.fragment:fragment:1.3.0-alpha04 , androidx.fragment:fragment-ktx:1.3.0-alpha04 , and androidx.fragment:fragment-testing:1.3.0-alpha04 are released. Version 1.3.0-alpha04 contains these commits.
ویژگی های جدید
- Added support for passing results between two Fragments via new APIs on
FragmentManager. This works for hierarchy fragments (parent/child), DialogFragments, and fragments in Navigation and ensures that results are only sent to your Fragment while it is at leastSTARTED. ( b/149787344 )
تغییرات API
- The target fragment APIs have been deprecated. To pass data between fragments the new Fragment Result APIs should be used instead. ( b/149787344 )
- The
startActivityForResult()/onActivityResult()andrequestPermissions()/onRequestPermissionsResult()APIs on Fragment have been deprecated. Please use the Activity Result APIs . ( aosp/1290887 ) - Breaking change from Activity
1.2.0-alpha04: theprepareCall()method has been renamed toregisterForActivityResult(). ( aosp/1278717 )
رفع اشکال
- The fragment's
getViewLifecycleOwner()is now stopped beforeonSaveInstanceState()is called, mirroring the behavior of the fragment's lifecycle. ( b/154645875 ) - Calling
setMenuVisibility(false)on a fragment now correctly changes the visibility of menus provided by its child fragments. ( b/153593580 ) - Fixed an
illegalStateExceptionwhen adding a fragment to aDialogFragment's view hierarchy withFragmentContainerView. ( b/154366601 ) - The
getDefaultViewModelProviderFactory()method on fragments no longer crashes when hosting your fragments outside of an activity. ( b/153762914 )
نسخه 1.3.0-alpha03
1 آوریل 2020
androidx.fragment:fragment:1.3.0-alpha03 , androidx.fragment:fragment-ktx:1.3.0-alpha03 , and androidx.fragment:fragment-testing:1.3.0-alpha03 are released. نسخه 1.3.0-alpha03 شامل این تعهدات است.
تغییرات API
- The
prepareCallmethods onFragmentare nowfinal. ( b/152439361 )
رفع اشکال
- Fixed a regression introduced in Fragment
1.3.0-alpha02when usingBottomSheetDialogFragment. ( b/151652127 , aosp/1263328 , aosp/1265163 ) - Fixed a crash when using
prepareCallfrom a fragment after a configuration change. ( b/152137004 ) - Fixed an issue where shared element and exit transitions are ignored when using
setTargetFragment(). ( b/152023196 ) - From Fragment
1.2.4: Updated the Fragment ProGuard rules to allow obfuscation of kept fragments. ( b/151605338 ) - From Fragment
1.2.4: Disabled theFragmentLiveDataObserveLint rule onDialogFragmentclasses as their lifecycle and view lifecycle are always in sync, making it safe to use eitherthisorviewLifecycleOwnerwhen callingobserve. ( b/151765086 )
Dependency Changes
- Fragments depend on Activity
1.2.0-alpha03, which had significant improvements to the Activity Result API introduced in Activity1.2.0-alpha02.
نسخه 1.3.0-alpha02
18 مارس 2020
androidx.fragment:fragment:1.3.0-alpha02 , androidx.fragment:fragment-ktx:1.3.0-alpha02 , and androidx.fragment:fragment-testing:1.3.0-alpha02 are released. نسخه 1.3.0-alpha02 شامل این تعهدات است.
ویژگی های جدید
- Added support for the
ActivityResultRegistryAPI introduced in Activity1.2.0-alpha02to handle thestartActivityForResult()+onActivityResult()as well asrequestPermissions()+onRequestPermissionsResult()flows without overriding methods in your Fragment in addition to providing hooks for testing these flows. See the updated Getting a Result from an Activity . ( b/125158199 )
تغییرات API
-
DialogFragmentnow provides a constructor that takes a@LayoutResthat indicates the layout thatonCreateView()should inflate by default. ( b/150327080 ) - The
onActivityCreated()method is now deprecated. Code touching the fragment's view should be done inonViewCreated()(which is called immediately beforeonActivityCreated()) and other initialization code should be inonCreate(). To receive a callback specifically when the activity'sonCreate()is complete, aLifeCycleObservershould be registered on the activity'sLifecycleinonAttach(), and removed once theonCreate()callback is received. ( b/144309266 )
رفع اشکال
- From Fragment
1.2.3: Fixed a bug inDialogFragmentthat caused aStackOverflowErrorwhen callinggetLayoutInflater()from withinonCreateDialog(). ( b/117894767 , aosp/1258664 ) - From Fragment
1.2.3: Reduced the scope of Fragment's included ProGuard rules to ensure that unused Fragment classes can be stripped. ( b/149665169 ) - From Fragment
1.2.3: Fixed false positives in theUseRequireInsteadOfGetLint check when using a local variable name that shadowed the Kotlin property name. ( b/149891163 ) - From Fragment
1.2.3:FragmentContainerViewno longer throws anUnsupportedOperationExceptionfor using the incorrect constructor in layout preview. ( b/149707833 )
مسائل شناخته شده
-
BottomSheetDialogFragmentno longer properly positions its dialog on the screen. ( b/151652127 )
نسخه 1.3.0-alpha01
4 مارس 2020
androidx.fragment:fragment:1.3.0-alpha01 , androidx.fragment:fragment-ktx:1.3.0-alpha01 , and androidx.fragment:fragment-testing:1.3.0-alpha01 are released. نسخه 1.3.0-alpha01 شامل این تعهدات است.
ویژگی های جدید
- Added support for the
ViewTreeLifecycleOwner.get(View)API added in Lifecycle2.3.0-alpha01such that it will return the Fragment'sviewLifecycleOwneras theLifecycleOwnerfor any Views returned byonCreateView(). ( aosp/1182955 )
تغییرات API
- The
setRetainInstance()method on Fragments has been deprecated. With the introduction of ViewModels , developers have a specific API for retaining state that can be associated with Activities, Fragments, and Navigation graphs. This allows developers to use a normal, not retained Fragment and keep the specific state they want retained separate, avoiding a common source of leaks while maintaining the useful properties of a single creation and destruction of the retained state (namely, the constructor of theViewModeland theonCleared()callback it receives). ( b/143911815 ) - With the release of ViewPager2
1.0.0, theFragmentPagerAdapterandFragmentStatePagerAdapterclasses for interacting withViewPagerhave been deprecated. See Migrate from ViewPager to ViewPager2 . ( b/145132715 )
رفع اشکال
- Fragment ProGuard rules now correctly only keep the default constructors
Fragmentclasses that are used rather than for allFragmentinstances, fixing a regression introduced in Fragment1.2.1. ( b/149665169 - The
require___()Lint rules added in Fragment1.2.2no longer false positive on local variables that share the same name as the shadowed Kotlin property names (ie,view). ( b/149891163 ) -
FragmentContainerViewno longer throws anUnsupportedOperationExceptionwhen using the layout preview in Android Studio. ( b/149707833 ) - Fixed an issue where retained fragments that were added after the state is saved would not be continually recreated and then destroyed after each configuration change. ( b/145832397 )
Version 1.2.5
Version 1.2.5
10 ژوئن 2020
androidx.fragment:fragment:1.2.5 , androidx.fragment:fragment-ktx:1.2.5 , and androidx.fragment:fragment-testing:1.2.5 are released. Version 1.2.5 contains these commits.
رفع اشکال
- The fragment's
getViewLifecycleOwner()is now stopped beforeonSaveInstanceState()is called, mirroring the behavior of the fragment's lifecycle. This was previously released in Fragment1.3.0-alpha04. ( b/154645875 ) - Calling
setMenuVisibility(false)on a fragment now correctly changes the visibility of menus provided by its child fragments. This was previously released in Fragment1.3.0-alpha04. ( b/153593580 )
Version 1.2.4
Version 1.2.4
1 آوریل 2020
androidx.fragment:fragment:1.2.4 , androidx.fragment:fragment-ktx:1.2.4 , and androidx.fragment:fragment-testing:1.2.4 are released. Version 1.2.4 contains these commits.
رفع اشکال
- Updated the Fragment ProGuard rules to allow obfuscation of kept fragments. ( b/151605338 )
- Disabled the
FragmentLiveDataObserveLint rule onDialogFragmentclasses as their lifecycle and view lifecycle are always in sync, making it safe to use eitherthisorviewLifecycleOwnerwhen callingobserve. ( b/151765086 )
Version 1.2.3
Version 1.2.3
18 مارس 2020
androidx.fragment:fragment:1.2.3 , androidx.fragment:fragment-ktx:1.2.3 , and androidx.fragment:fragment-testing:1.2.3 are released. Version 1.2.3 contains these commits.
رفع اشکال
- Fixed a bug in
DialogFragmentthat caused aStackOverflowErrorwhen callinggetLayoutInflater()from withinonCreateDialog(). ( b/117894767 , aosp/1258665 ) - Reduced the scope of Fragment's included ProGuard rules to ensure that unused Fragment classes can be stripped. ( b/149665169 )
- Fixed false positives in the
UseRequireInsteadOfGetLint check when using a local variable name that shadowed the Kotlin property name. ( b/149891163 ) -
FragmentContainerViewno longer throws anUnsupportedOperationExceptionfor using the incorrect constructor in layout preview. ( b/149707833 )
Version 1.2.2
Version 1.2.2
19 فوریه 2020
androidx.fragment:fragment:1.2.2 , androidx.fragment:fragment-ktx:1.2.2 , and androidx.fragment:fragment-testing:1.2.2 are released. Version 1.2.2 contains these commits.
New Lint checks
- Lint suggests using the
viewLifecycleOwneras theLifecycleOwnerto calls intoOnBackPressedDispatcherinonCreateView(),onViewCreated(), andonActivityCreated(). ( b/142117657 ) - Added a new Lint check that confirms that you are using the correct
debugImplementationwhen using thefragment-testingartifact. ( b/141500106 ) - Fragments now suggest using the associated
require___()methods for more descriptive error messages instead ofcheckNotNull(get___()),requireNonNull(get___()), orget___()!!for all of the Fragment APIs that include both agetandrequireequivalent. ( aosp/1202883 )
رفع اشکال
- Fixed the Fragment ProGuard files to avoid R8 warnings ( b/148963981 )
- Improved the existing Lint check suggesting using
viewLifecycleOwnerwhen usingobserveto also handle thelivedata-ktxextension method version ofobserve. ( b/148996309 ) - Fixed the formatting for many of the Lint checks ( aosp/1157012 )
External contributions
- Thanks to Zac Sweers for contributing the
require___()Lint checks on behalf of Slack! ( aosp/1202883 )
نسخه 1.2.1
نسخه 1.2.1
5 فوریه 2020
androidx.fragment:fragment:1.2.1 , androidx.fragment:fragment-ktx:1.2.1 , and androidx.fragment:fragment-testing:1.2.1 are released. Version 1.2.1 contains these commits .
رفع اشکال
- Fragments added via the
addandreplacemethods that take aClassinstance (or the Kotlin reified versions) now have their default constructor kept by ProGuard. ( b/148181315 ) -
FragmentStatePagerAdapterandFragmentPagerAdapterno longer catch exceptions thrown byFragmentManagerwhen runningfinishUpdate(). ( aosp/1208711 ) - Fixed an issue where
FragmentManager.findFragment()did not work with fragments added via the<fragment>tag. ( b/147784323 ) - Fragments inflated using the
<fragment>tag now always receive a call toonInflate()beforeonCreate()when in the layout. ( aosp/1215856 ) - Calling
toString()on aFragmentManagerinstance no longer throws aNullPointerExceptionwhen the Activity is already destroyed. ( b/148189412 )
Dependency changes
- Fragments
1.2.1now depends on Lifecycle ViewModel SavedState2.2.0.
نسخه 1.2.0
نسخه 1.2.0
22 ژانویه 2020
androidx.fragment:fragment:1.2.0 , androidx.fragment:fragment-ktx:1.2.0 , and androidx.fragment:fragment-testing:1.2.0 are released. Version 1.2.0 contains these commits .
تغییرات مهم از 1.1.0
- FragmentContainerView : The
FragmentContainerViewis the strongly recommended container for dynamically added Fragments, replacing usage ofFrameLayoutor other layouts. It also supports the sameclass,android:name, and optionalandroid:tagas the<fragment>tag, but uses a normalFragmentTransactionto add this initial fragment, instead of the custom code path used by<fragment>. -
onDestroyView()timing : Fragments now wait for exit animations, exit framework transitions, and exit AndroidX transitions (when using Transition1.3.0) to complete before callingonDestroyView(). - Class based
add()andreplace(): Added new overloads ofadd()andreplace()onFragmentTransactionthat take aClass<? extends Fragment>and optionalBundleof arguments. These methods use yourFragmentFactoryto construct an instance of the Fragment to add. Kotlin extensions that use reified types (ie,fragmentTransaction.replace<YourFragment>(R.id.container)) have also been added tofragment-ktx. - Lifecycle ViewModel SavedState Integration :
SavedStateViewModelFactoryis now the default factory used when usingby viewModels(),by activityViewModels(), theViewModelProviderconstructor, orViewModelProviders.of()with a Fragment. - New Lint checks : Added a new Lint check that ensures you are using
getViewLifecycleOwner()when observingLiveDatafromonCreateView(),onViewCreated(), oronActivityCreated(). -
getFragmentManager()deprecation : ThegetFragmentManager()andrequireFragmentManager()methods on Fragment have been deprecated and replaced with a singlegetParentFragmentManager()method, which returns the non-nullFragmentManagerthe Fragment is added to (you can useisAdded()to determine if it is safe to call). -
FragmentManager.enableDebugLogging()deprecation : The staticFragmentManager.enableDebugLoggingmethod has been deprecated. FragmentManager now respectsLog.isLoggable()for the tagFragmentManager, allowing you to enable eitherDEBUGorVERBOSElogging without re-compiling your app.
مسائل شناخته شده
- Fragments referenced only via the
classorandroid:nameattribute on aFragmentContainerVieware not kept by ProGuard automatically, requiring that you manually add a keep rule for each fragment class. ( b/142601969 ) - When adding a
NavHostFragmentusingclassorandroid:namein XML withFragmentContainerView, you cannot usefindNavController()inonCreate()of your Activity. ( b/142847973 )
Version 1.2.0-rc05
8 ژانویه 2020
androidx.fragment:fragment:1.2.0-rc05 , androidx.fragment:fragment-ktx:1.2.0-rc05 , and androidx.fragment:fragment-testing:1.2.0-rc05 are released. Version 1.2.0-rc05 contains these commits .
رفع اشکال
- Fixed a regression in Fragment
1.2.0-rc04when using the<fragment>tag which causedonViewCreated()to be called incorrectly during activity destruction. ( b/146290333 ) - Fragments added with the
<fragment>tag now properly have their non-config cleared even when they are only sometimes in the layout (ie, only in your landscape layout). As a consequence, these Fragments are now correctly moved toCREATEDeven when not in your layout instead of being instantiated but never moving through any lifecycle methods. ( b/145769287 )
Version 1.2.0-rc04
18 دسامبر 2019
androidx.fragment:fragment:1.2.0-rc04 , androidx.fragment:fragment-ktx:1.2.0-rc04 , and androidx.fragment:fragment-testing:1.2.0-rc04 are released. Version 1.2.0-rc04 contains these commits .
رفع اشکال
- Adjusted the animations for
TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSE, andTRANSIT_FRAGMENT_FADEto avoid visual issues. ( b/145468417 )
نسخه 1.2.0-RC03
4 دسامبر 2019
androidx.fragment:fragment:1.2.0-rc03 , androidx.fragment:fragment-ktx:1.2.0-rc03 , and androidx.fragment:fragment-testing:1.2.0-rc03 are released. Version 1.2.0-rc03 contains these commits .
رفع اشکال
- Fixed an unintentional behavior change where Fragments who have been removed are still returned by
findFragmentById()/findFragmentByTag()while their exit animations/transitions run. ( b/143982969 , aosp/1167585 ) - Child fragments are now correctly stopped before their parents when the containing activity calls
onSaveInstanceState(). ( b/144380645 ) - Fixed an issue where Views were incorrectly marked
INVISIBLEafter popping a hidden Fragment. ( b/70793925 ) - Fragment shared element transitions now handle Views that have been rotated, scaled, etc. ( b/142835261 )
Documentation Updates
- Clarified the deprecation documentation around
setUserVisibleHint(). ( b/143897055 ) - Improved the documentation on
setFragmentFactory()andgetFragmentFactory()to better indicate that setting aFragmentFactorywill also affect child FragmentManagers. ( aosp/1170095 )
Dependency changes
- Fragments now depends on Lifecycle
2.2.0-rc03, Lifecycle ViewModel SavedState1.0.0-rc03, and Activity1.1.0-rc03.
Version 1.2.0-rc02
7 نوامبر 2019
androidx.fragment:fragment:1.2.0-rc02 , androidx.fragment:fragment-ktx:1.2.0-rc02 , and androidx.fragment:fragment-testing:1.2.0-rc02 are released. Version 1.2.0-rc02 contains these commits .
رفع اشکال
- When in Kotlin, the LintFix for using
getViewLifecycleOwner()when observingLiveDatafromonCreateView(),onViewCreated(), oronActivityCreated()(introduced in Fragment1.2.0-rc01) now uses the Kotlin property access syntaxviewLifecycleOwnerinstead ofgetViewLifecycleOwner(). ( aosp/1143821 )
نسخه 1.2.0-RC01
23 اکتبر 2019
androidx.fragment:fragment:1.2.0-rc01 , androidx.fragment:fragment-ktx:1.2.0-rc01 , and androidx.fragment:fragment-testing:1.2.0-rc01 are released. Version 1.2.0-rc01 contains these commits .
ویژگی های جدید
-
FragmentContainerViewnow supports theclassattribute in addition toandroid:name, mirroring the functionality of the<fragment>tag. ( b/142722242 ) - Added a new Lint check that ensures you are using
getViewLifecycleOwner()when observingLiveDatafromonCreateView(),onViewCreated(), oronActivityCreated(). ( b/137122478 )
رفع اشکال
- The
onDismissandonCancelcallbacks onDialogFragmentnow guarantee that theDialogInterfacepassed to them is non-null and thatgetDialog()returns non-null when they are executed. ( b/141974033 ) -
FragmentContainerViewnow adds the Fragment defined byclassorandroid:nameas part of inflation, ensuring thatfindFragmentById()andfindFragmentByTag()work immediately afterwards. ( b/142520327 ) - Fixed an
IllegalStateExceptioninFragmentContainerViewdue to the state being saved. ( b/142580713 ) - Fixed an
UnsupportedOperationExceptioninFragmentContainerViewwhen theFragmentContainerViewclass is obfuscated. ( b/142657034 )
مسائل شناخته شده
- Fragments referenced only via the
classorandroid:nameattribute on aFragmentContainerVieware not kept by ProGuard automatically, requiring that you manually add a keep rule for each fragment class. We have disabled the Lint rule suggesting moving toFragmentContainerViewuntil this is fixed viaaapt2. ( b/142601969 )
نسخه 1.2.0-beta02
11 اکتبر 2019
androidx.fragment:fragment:1.2.0-beta02 , androidx.fragment:fragment-ktx:1.2.0-beta02 , and androidx.fragment:fragment-testing:1.2.0-beta02 are released. Version 1.2.0-beta02 contains these commits .
رفع اشکال
- Fixed an issue where Fragment's
onInflate()did not receive proper attributes fromFragmentContainerView, breaking cases such asNavHostFragment. ( b/142421837 )
نسخه 1.2.0-beta01
9 اکتبر 2019
androidx.fragment:fragment:1.2.0-beta01 , androidx.fragment:fragment-ktx:1.2.0-beta01 , and androidx.fragment:fragment-testing:1.2.0-beta01 are released. Version 1.2.0-beta01 contains these commits .
ویژگی های جدید
-
FragmentContainerViewadds support for adding an initial fragment with added support for theandroid:nameand optionalandroid:tagXML attributes. Unlike the<fragment>tag,FragmentContainerViewuses a normalFragmentTransactionunder the hood to add the initial fragment, allowing furtherFragmentTransactionoperations on theFragmentContainerViewand enables the usage of View Binding for the layout. ( b/139830628 , b/141177981 ) - Fragments now contains a Lint warning offering a quick fix to replace
<fragment>withFragmentContainerView. ( b/139830056 )
رفع اشکال
- Fixed a
ClassCastExceptionwhen usingandroidx.transition. ( b/140680619 ) - When using Transition
1.3.0-beta01, Fragments now wait forandroidx.transitiontransitions (in addition to framework transitions and animations, which were fixed in Fragment1.2.0-alpha03and Fragment1.2.0-alpha02, respectively) to finish before dispatchingonDestroyView(). ( aosp/1119841 ) - When using Transition
1.3.0-beta01, Fragments now properly cancelandroidx.transitiontransitions before starting new transitions / animations on the same container. ( aosp/1119841 ) - Fixed an issue on API 17 and lower when using
androidx.transitiontransitions on the root view of your Fragment when usingFragmentContainerView. ( b/140361893 ) - The
fragment-testingartifact now depends on AndroidX Test1.2.0, fixing an incompatibility with the latest Espresso 3.2.0. ( b/139100149 ) - Removed usage of
Log.win FragmentManager. ( aosp/1126468 )
مسائل شناخته شده
- Fragment's
onInflate()do not receive proper attributes fromFragmentContainerView, breaking cases such asNavHostFragment. ( b/142421837 )
Version 1.2.0-alpha04
18 سپتامبر 2019
androidx.fragment:fragment:1.2.0-alpha04 , androidx.fragment-ktx:example:1.2.0-alpha04 , and androidx.fragment:fragment-testing:1.2.0-alpha04 are released. Version 1.2.0-alpha04 contains these commits .
API changes
- The
getFragmentManager()andrequireFragmentManager()methods onFragmenthave been deprecated and replaced with a singlegetParentFragmentManager()method, which returns the non-nullFragmentManagerthe Fragment is added to (you can useisAdded()to determine if it is safe to call). ( b/140574496 ) - The static
FragmentManager.enableDebugLoggingmethod has been deprecated. FragmentManager now respectsLog.isLoggable()for the tagFragmentManager, allowing you to enable eitherDEBUGorVERBOSElogging without re-compiling your app. ( aosp/1116591 )
رفع اشکال
- Fragments are now properly destroyed while exit animations on other fragments are running. ( b/140574199 )
- Fixed an issue where Fragments would call
Activity.findViewById()where before it did not. ( aosp/1116431 )
Version 1.2.0-alpha03
5 سپتامبر 2019
androidx.fragment:fragment:1.2.0-alpha03 , androidx.fragment:fragment-ktx:1.2.0-alpha03 , and androidx.fragment:fragment-testing:1.2.0-alpha03 are released. The commits included in this version can be found here .
API changes
-
FragmentContainerViewis nowfinal. ( b/140133091 )
رفع اشکال
-
FragmentContainerViewnow properly reverses the draw order when popping fragments off the back stack. ( b/139104187 ) - Fixed an issue where the wrong animation would run when both popping a fragment and adding a new fragment at the same time. ( b/111659726 )
- Fragments now wait for transitions (in addition to animations, which was fixed in Fragment
1.2.0-alpha02) to finish before dispatchingonDestroyView(). ( b/138741697 )
Version 1.2.0-alpha02
7 آگوست 2019
androidx.fragment:fragment:1.2.0-alpha02 , androidx.fragment:fragment-ktx:1.2.0-alpha02 , and androidx.fragment:fragment-testing:11.2.0-alpha02 is released. The commits included in this version can be found here .
ویژگی های جدید
-
SavedStateViewModelFactoryis now the default factory used when usingby viewModels(),by activityViewModels(), theViewModelProviderconstructor, orViewModelProviders.of()with aFragment. ( b/135716331 ) - The default animations when using
TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSE,TRANSIT_FRAGMENT_FADEwithsetTransitionon aFragmentTransactionhave been updated to match the animations used by activities on Android 10 devices. ( aosp/1012812 , aosp/1014730 )
API changes
- Introduces
FragmentContainerViewas the strongly recommended container for dynamically added Fragments, replacing usage ofFrameLayout, etc. as it fixes animation z-ordering issues and window insets dispatching to Fragments. ( b/37036000 , aosp/985243 , b/136494650 ) - Added a static
FragmentManager.findFragment(View)method to retrieve the containing Fragment from a view inflated by a fragment. A Kotlin extension is also available infragment-ktx. ( aosp/1090757 ) - Added new overloads of
add()andreplace()onFragmentTransactionthat take aClass<? extends Fragment>and optionalBundleof arguments. These methods use yourFragmentFactoryto construct an instance of the Fragment to add. Kotlin extension that use reified types (ie,fragmentTransaction.replace<YourFragment>(R.id.container)) have also been added tofragment-ktx. ( b/126124987 ) -
@MainThreadannotations have been added toFragmentlifecycle callbacks. ( b/127272564 ) - The breadcrumb title related APIs on
FragmentTransactionandFragmentManager.BackStackEntryhave been deprecated. ( b/138252944 ) - The
setTransitionStylemethod onFragmentTransactionhas been deprecated. ( aosp/1011537 ) - Many of the methods in
FragmentManagerare no longerabstract.FragmentManageritself remainsabstractand should not be directly instantiated or extended; you should continue to only get an existing instance fromgetSupportFragmentManager(),getChildFragmentManager(), etc.
رفع اشکال
- From Fragment
1.1.0-rc04: Fragments now correctly cancel postponed transitions on Fragments have been popped. ( b/138251858 ) - From Fragment
1.1.0-rc03: Fixed an issue where callingpostponeEnterTransition()with a timeout more than once would not cancel previous timeouts. ( b/137797118 ) - From Fragment
1.1.0-rc02: Fixed a crash inFragmentPagerAdapterandFragmentStatePagerAdapterwhen removing the current item. ( b/137209870 ) - Fragments now wait for animations to finish before dispatching
onDestroyView(). ( b/136110528 ) - Fragment animations from child fragments and their descendants are now properly handled when animating the parent Fragment. ( b/116675313 )
- Fixed a
NullPointerExceptionwhen using shared element transitions and combining a pop and add operation. ( b/120507394 ) - Added a workaround to
IllegalStateExceptions when usingFragmentPagerAdapterandFragmentStatePagerAdapterin Robolectric tests. ( b/137201343 )
Version 1.2.0-alpha01
2 جولای 2019
androidx.fragment:fragment:1.2.0-alpha01 , androidx.fragment:fragment-ktx:1.2.0-alpha01 , and androidx.fragment:fragment-testing:1.2.0-alpha01 are released. The commits included in this version can be found here .
ویژگی های جدید
- FragmentManager now calls
requestApplyInsets()after attaching the Fragment's view and directly before callingonViewCreated(), ensuring that your view always has the correct insets. ( b/135945162 )
رفع اشکال
- Fixed a
NullPointerExceptionwhen popping aFragmentTransactionthat usedsetPrimaryNavigationFragment()beforereplace(). ( b/134673465 )
نسخه 1.1.0
نسخه 1.1.0
5 سپتامبر 2019
androidx.fragment:fragment:1.1.0 , androidx.fragment:fragment-ktx:1.1.0 , and androidx.fragment:fragment-testing:1.1.0 are released. The commits included in this version can be found here .
Important Changes since 1.0.0
- fragment-testing : The
fragment-testingartifact provides aFragmentScenarioclass for testing a fragment in isolation. See Test your app's fragments documentation for more details. - FragmentFactory : You can now set a
FragmentFactoryon aFragmentManagerto manage the creation of fragment instances, removing the strict requirement to have a no-argument constructor. - Kotlin Property Delegates for ViewModels : The
fragment-ktxartifact now contains two Kotlin property delegates:by viewModels()for accessing ViewModels associated with the individual fragment andby activityViewModels()for accessing ViewModels scoped to the activity. - Max Lifecycle : You can now set a max Lifecycle state for a Fragment by calling
setMaxLifecycle()on aFragmentTransaction. This replaces the now deprecatedsetUserVisibleHint().FragmentPagerAdapterandFragmentStatePagerAdapterhave a new constructor that allows you to switch to the new behavior. - FragmentActivity LayoutId constructor : Subclasses of
FragmentActivitycan now optionally call into a constructor onFragmentActivitythat takes anR.layoutID, indicating the layout that should be set as the content view as an alternative to callingsetContentView()inonCreate(). This does not change the requirement that your subclass have a no-argument constructor. - Fragment LayoutId constructor : Subclasses of
Fragmentcan now optionally call into a constructor onFragmentthat takes anR.layoutID, indicating the layout that should be used for this fragment as an alternative to overridingonCreateView(). The inflated layout can be configured inonViewCreated(). - Postpone with a timeout : A new overload of
postponeEnterTransition()has been added that takes a timeout.
Version 1.1.0-rc04
7 آگوست 2019
androidx.fragment:fragment:1.1.0-rc04 , androidx.fragment:fragment-ktx:1.1.0-rc04 , and androidx.fragment:fragment-testing:1.1.0-rc04 is released. The commits included in this version can be found here .
رفع اشکال
- Fragments now correctly cancel postponed transitions on Fragments have been popped. ( b/138251858 )
Version 1.1.0-rc03
19 جولای 2019
androidx.fragment:fragment:1.1.0-rc03 , androidx.fragment:fragment-ktx:1.1.0-rc03 , and androidx.fragment:fragment-testing:1.1.0-rc03 is released. The commits included in this version can be found here .
رفع اشکال
- Fixed an issue where calling
postponeEnterTransition()with a timeout more than once would not cancel previous timeouts. ( b/137797118 )
Version 1.1.0-rc02
17 جولای 2019
androidx.fragment:fragment:1.1.0-rc02 , androidx.fragment:fragment-ktx:1.1.0-rc02 , and androidx.fragment-testing:fragment:1.1.0-rc02 are released. The commits included in this version can be found here .
رفع اشکال
- Fixed a crash in
FragmentPagerAdapterandFragmentStatePagerAdapterwhen removing the current item. ( b/137209870 )
Version 1.1.0-rc01
2 جولای 2019
androidx.fragment:fragment:1.1.0-rc01 , androidx.fragment:fragment-ktx:1.1.0-rc01 , and androidx.fragment:fragment-testing:1.1.0-rc01 are released. The commits included in this version can be found here .
رفع اشکال
- Fragments now properly update their visibility when using
show()orhide()operations while the transition is running. ( b/133385058 ) - Fixed a
NullPointerExceptionwhen popping aFragmentTransactionthat usedsetPrimaryNavigationFragment()beforereplace(). ( b/134673465 )
Version 1.1.0-beta01
5 ژوئن 2019
androidx.fragment:fragment:1.1.0-beta01 , androidx.fragment:fragment-ktx:1.1.0-beta01 , and androidx.fragment:fragment-testing:1.1.0-beta01 are released. The commits included in this version can be found here .
رفع اشکال
-
androidx.lifecycle.Lifecyclecallbacks (specifically related toSTARTED,RESUMED,PAUSED,STOPPED, andDESTROYED) for nested Fragments are now properly nested. ( b/133497591 ) -
OnBackPressedCallbackinstances registered in a Fragment'sonCreate()now properly take precedence over the child FragmentManager. ( b/133175997 ) - Child fragments are no longer animated when their parent fragment is being replaced. ( b/121017790 )
- Fragments animations and transitions are now ignored when using
animateLayoutChanges="true", fixing an issue where Fragments were not properly destroyed. ( b/116257087 )
Version 1.1.0-alpha09
16 مه 2019
androidx.fragment:fragment:1.1.0-alpha09 , androidx.fragment:fragment-ktx:1.1.0-alpha09 , and androidx.fragment:fragment-testing:1.1.0-alpha09 are released. The commits included in this version can be found here .
API changes
- Fragments now receive a callback to a new
onPrimaryNavigationFragmentChanged(boolean)method when the primary navigation fragment changes. aosp/960857
رفع اشکال
- Menu Items inflated by a child Fragment are now correctly removed when the Parent Fragment is removed. b/131581013
Version 1.1.0-alpha08
7 مه 2019
androidx.fragment:fragment:1.1.0-alpha08 , androidx.fragment:fragment-ktx:1.1.0-alpha08 , and androidx.fragment:fragment-testing:1.1.0-alpha08 are released. The commits included in this version can be found here .
This release is incompatible with Preferences 1.1.0-alpha01 through 1.1.0-alpha04. Please upgrade to Preferences 1.1.0-alpha05 when using this version of Fragments.
ویژگی های جدید
- Added a new overload of
postponeEnterTransition()that takes a timeout, after which the Fragment will automatically callstartPostponedEnterTransition()b/120803208
API changes
- Breaking change: the previously deprecated
FragmentFactoryinstantiatemethod that took aBundlehas been removed. aosp/953856 - Breaking change: The
RESUME_ONLY_CURRENT_FRAGMENTandUSE_SET_USER_VISIBLE_HINTconstants inFragmentPagerAdapterandFragmentStatePagerAdapterhave been renamed toBEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENTandBEHAVIOR_SET_USER_VISIBLE_HINT, respectively. aosp/954782
رفع اشکال
- Fragments that have had their lifecycle capped via
setMaxLifecycle()no longer get resumed before reaching their final state. b/131557151 - When using
setMaxLifecycle(Lifecycle.State.CREATED), Fragments will properly have their view destroyed. aosp/954180
Version 1.1.0-alpha07
25 آوریل 2019
androidx.fragment:fragment:1.1.0-alpha07 , androidx.fragment:fragment-ktx:1.1.0-alpha07 , and androidx.fragment:fragment-testing:1.1.0-alpha07 are released. The commits included in this version can be found here .
ویژگی های جدید
- You can now set a max Lifecycle state for a Fragment by calling
setMaxLifecycle()on aFragmentTransaction. This replaces the now deprecatedsetUserVisibleHint().FragmentPagerAdapterandFragmentStatePagerAdapterhave a new constructor that allows you to switch to the new behavior. ( b/129780800 )
تغییرات API
-
moveToState(STARTED)onFragmentScenariocan now only be called on API 24+ devices. ( b/129880016 )
تغییرات رفتار
- As a consequence of ( b/129907905 ), fragments on the back stack will not get a callback to
onCreateView()when the hosting activity is recreated.onCreateView()will now only be called when the fragment becomes visible (ie, the back stack is popped).
رفع اشکال
- Fixed an issue when using a
<fragment>tag in XML and thecontentLayoutIdconstructor ofFragmentActivityorAppCompatActivity. ( b/129907905 ) - Corrected an issue where fragments on the back stack would not be moved to at least
CREATEDafter a configuration change, causing ViewModels and child retained fragments to not be properly disposed. ( b/129593351 ) - Fixed a crash in
restoreSaveStatecaused by a desync of the retained fragments after the instance state is saved. ( b/130433793 ) ( aosp/947824 ) - Fixed issues where an
OnBackPressedCallbackadded with a fragment lifecycle would not be called if theFragmentManagerhad a back stack. See androidx.activity 1.0.0-alpha07 for more details. ( aosp/948209 ) - Fragments no longer enforce
LAYER_TYPE_HARDWAREfor animations. If you specifically need a hardware layer animation, please set it as part of your animation. ( b/129486478 )
Version 1.1.0-alpha06
3 آوریل 2019
androidx.fragment:fragment:1.1.0-alpha06 , androidx.fragment:fragment-ktx:1.1.0-alpha06 , and androidx.fragment:fragment-testing:1.1.0-alpha06 are released. The commits included in this version can be found here .
ویژگی های جدید
- Exceptions thrown by FragmentManager now include the Fragment's name in the message. ( b/67759402 )
تغییرات API
-
FragmentandFragmentActivitynow contain a second constructor that takes a@LayoutRes int, which replaces the previous behavior of annotating your class with@ContentView. This approach works in both app and library modules. ( b/128352521 ) - FragmentActivity's
onActivityResult()is now properly marked as@CallSuper. ( b/127971684 ) - The FragmentFactory's
instantiatemethod that takes an argument Bundle has been deprecated and apps should use the newinstantiateoverload that does not take a Bundle. ( b/128836103 ) -
FragmentScenariomethods are now properly annotated with@StyleRes. ( aosp/924193 ) -
FragmentTabHosthas been deprecated. ( b/127971835 ) - FragmentActivity's
getThemedContext()has been removed. ( aosp/934078 )
رفع اشکال
- Fixed a regression in 1.1.0-alpha05 that caused the incoming Fragment to flash on the screen. ( b/129405432 )
- Fixed an issue where the primary navigation fragment would be lost after a popBackStack+replace+popBackStack series of operations. ( b/124332597 )
- Fixed an issue when using
@ContentViewconstructors on your Activity when restoring Fragment state. ( b/127313094 ) - Corrected the logic of
setTargetFragment()when replacing an existing target Fragment with a Fragment not yet attached to the FragmentManager. ( aosp/932156 )
Version 1.1.0-alpha05
13 مارس 2019
androidx.fragment:fragment:1.1.0-alpha05 , androidx.fragment:fragment-ktx:1.1.0-alpha05 , and androidx.fragment:fragment-testing:1.1.0-alpha05 are released. The full list of commits included in this version can be found here .
ویژگی های جدید
-
@ContentViewannotation lookups are now cached ( b/123709449 )
تغییر رفتار
- Calling
remove(),hide(),show(),detach(), andsetPrimaryNavigationFragment()with a Fragment attached to a different FragmentManager now throws anIllegalStateExceptionrather than silently failing ( aosp/904301 )
رفع اشکال
-
onNewIntentforFragmentActivityis now correctly marked with@CallSuper( b/124120586 ) - Fixed an issue where
DialogFragment'sonDismiss()could be called twice when usinggetDialog().dismiss()orgetDialog().cancel()( b/126563750 )
Version 1.1.0-alpha04
7 فوریه 2019
androidx.fragment:fragment 1.1.0-alpha04 , androidx.fragment:fragment-ktx 1.1.0-alpha04 , and androidx.fragment:fragment-testing 1.1.0-alpha04 are released.
ویژگی های جدید
- Added support for the
@ContentViewclass annotation that allows you to indicate which layout XML file should be inflated as an alternative to overridingonCreateView(). It is recommended to do view related work inonViewCreated(). ( aosp/837619 ) -
fragment-testingnow depends onandroidx.test:core-ktx1.1.0 stable ( b/121209673 ) - You can now use
openActionBarOverflowOrOptionsMenuwithFragmentScenarioto test Fragment hosted options menus ( b/121126668 )
API changes
- Added a
requireArguments()method which returns a@NonNull Bundleor throws anIllegalStateException( b/121196360 ) - Added a note that
getLifecycle(),getViewLifecycleOwner(), andgetViewLifecycleOwnerLiveData()should not be overridden and will be made final in a future release. Please file a feature request if you are currently overriding this method. ( aosp/880714 ) - Added a note that
getViewModelStore()should not be overridden and will be made final in a future release. Please file a feature request if you are currently overriding this method. ( aosp/880713 ) - Fixed an issue with binary compatibility with previous releases of Fragments. ( aosp/887877 ) ( aosp/889834 )
رفع اشکال
- Target fragments are correctly cleared out when you pass
nulltosetTargetFragment(). ( aosp/849969 ) - Fixed an issue where target Fragments were sometimes unavailable in or after
onDestroy(). ( b/122312935 ) - DialogFragment's onDismiss() is now called before
onDestroy(). ( aosp/874133 ) ( aosp/890734 )
Version 1.1.0-alpha03
17 دسامبر 2018
ویژگی های جدید
- Fragment now implements
BundleSavedStateRegistryOwnerand depends on the newly released SavedState library [ aosp/824380 ] - A
by activityViewModelsKotlin property delegate has been added to retrieve ViewModels associated with the containing Activity [ b/119050253 ] - The
by viewModelsKotlin property delegate has been expanded to take an optional lambda method for getting theViewModelStoreOwner, allowing you to pass in the parent Fragment or other customViewModelStoreOwnerwith code such asval viewModel: MyViewModel by viewModels(::requireParentFragment)[ b/119050253 ]
API changes
-
FragmentScenarionow allows you to specify a theme such asTheme.AppCompat[ b/119054431 ]. This is a breaking change. - Added a
requireView()method which returns a@NonNull Viewor throws anIllegalStateException[ b/120241368 ] - Added a
requireParentFragment()method which returns a@NonNull Fragmentor throws anIllegalStateException[ b/112103783 ]
رفع اشکال
- Fixed IllegalStateException: Failure saving state b/120814739
- Fragments being restored from saved instance state will now always receive a non-null
Bundle[ b/119794496 ] - Removed Fragments no longer reuse their
Lifecycleobject if re-added [ b/118880674 ]
Version 1.1.0-alpha02
3 دسامبر 2018
ویژگی های جدید
- FragmentScenario's Kotlin extensions now let you use a lambda for Fragment construction as an alternative to passing in a
FragmentFactoryinstance. ( aosp/812913 )
رفع اشکال
- Fixed an IllegalStateException when using nested Fragments on the back stack ( b/119256498 )
- Fixed crash when using
FragmentScenario.recreate()with aFragmentFactory( aosp/820540 ) - Fixed an issue where target Fragments were not accessible after the Fragment was removed ( aosp/807634 )
Version 1.1.0-alpha01
5 نوامبر 2018
This is the first release of the fragment-testing artifact and FragmentScenario which is built on top of the androidx.test:core APIs. See the Fragment testing documentation for more details.
ویژگی های جدید
- New FragmentScenario class for testing Fragments in isolation.
- You can now set a
FragmentFactoryon anyFragmentManagerto control how new Fragment instances are instantiated. - Added a new
by viewModels()Kotlin property delegate for retrieving ViewModels from a Fragment. - Pending input events (such as clicks) are now canceled in a Fragment's
onStop().
API changes
- Significantly expanded the nullability annotations across the Fragment API surface.
رفع اشکال
- Fix an issue which caused Fragment operations to fail from within LiveData (b/77944637)
مسائل شناخته شده
- Target Fragments cannot be accessed after a Fragment has been removed from the FragmentManager.
-
fragment-testingdepends onandroidx.test:core:1.0.0-beta01instead of the correctandroidx.test:core:1.0.0.