Mảnh
| Bản cập nhật mới nhất | Bản phát hành ổn định | Bản phát hành dùng thử | Bản phát hành beta | Bản phát hành alpha |
|---|---|---|---|---|
| Ngày 13 tháng 8 năm 2025 | 1.8.9 | - | - | - |
Khai báo phần phụ thuộc
Để thêm một phần phụ thuộc trên Fragment, bạn phải thêm kho lưu trữ Google Maven vào dự án của mình. Đọc nội dung Kho lưu trữ Maven của Google để biết thêm thông tin.
Thêm các phần phụ thuộc cho cấu phần phần mềm bạn cần trong tệp build.gradle cho ứng dụng hoặc mô-đun:
Groovy
dependencies { def fragment_version = "1.8.9" // Java language implementation implementation "androidx.fragment:fragment:$fragment_version" // Kotlin implementation "androidx.fragment:fragment-ktx:$fragment_version" // Compose implementation "androidx.fragment:fragment-compose:$fragment_version" // Testing Fragments in Isolation debugImplementation "androidx.fragment:fragment-testing-manifest:$fragment_version" androidTestImplementation "androidx.fragment:fragment-testing:$fragment_version" }
Kotlin
dependencies { val fragment_version = "1.8.9" // Java language implementation implementation("androidx.fragment:fragment:$fragment_version") // Kotlin implementation("androidx.fragment:fragment-ktx:$fragment_version") // Compose implementation("androidx.fragment:fragment-compose:$fragment_version") // Testing Fragments in Isolation debugImplementation("androidx.fragment:fragment-testing:$fragment_version") }
Để biết thêm thông tin về các phần phụ thuộc, hãy xem bài viết Thêm phần phụ thuộc vào bản dựng.
Ý kiến phản hồi
Ý kiến phản hồi của bạn có thể giúp chúng tôi cải thiện Jetpack. Hãy cho chúng tôi biết nếu bạn phát hiện lỗi mới hoặc có ý tưởng cải thiện thư viện này. Vui lòng xem các lỗi hiện có trong thư viện này trước khi báo một lỗi mới. Bạn có thể thêm lượt bình chọn cho lỗi hiện có bằng cách nhấp vào nút dấu sao.
Xem tài liệu về Công cụ theo dõi lỗi để biết thêm thông tin.
Phiên bản 1.8
Phiên bản 1.8.9
Ngày 13 tháng 8 năm 2025
Phát hành androidx.fragment:fragment-*:1.8.9. Phiên bản 1.8.9 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục vấn đề khi huỷ một cử chỉ xem trước thao tác quay lại sẽ khiến cử chỉ tiếp theo không tạo ảnh động đúng cách khi sử dụng trình tạo ảnh động. (I0a400, b/384765586)
- Khắc phục lỗi trong đó tổ hợp
setMaxLifecyclevàpopBackStackcó thể không di chuyển được mảnh trên cùng sang trạng thái RESUMED. (I3448b, b/406127576)
Phiên bản 1.8.8
Ngày 4 tháng 6 năm 2025
Phát hành androidx.fragment:fragment-*:1.8.8. Phiên bản 1.8.8 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục vấn đề
FragmentManagergặp sự cố khi cố gắng lưu trạng thái của các mảnh được thêm bằngsetMaxLifecycle(Lifecycle.State.INITIALIZED). Vì chưa từng trải quaonCreate(), nên các mảnh này không còn trạng thái nào được lưu hoặconSaveInstanceState()được gọi. (I6e37a)
Phiên bản 1.8.7
Ngày 20 tháng 5 năm 2025
Phát hành androidx.fragment:fragment-*:1.8.7. Phiên bản 1.8.7 bao gồm những thay đổi đã được xác nhận này.
Sửa lỗi
- Khắc phục vấn đề
FragmentManagerkhông ở trạng thái thích hợp sau các thao tác bật và thay thế trong cùng một khung có thể gây ra sự cố khi kết hợp với việc bật ngăn xếp quay lại thông quapopBackStackhoặc cử chỉ xem trước thao tác quay lại. (I50ad1) - Khắc phục sự cố do việc sử dụng AndroidX Transitions và gặp phải trường hợp các giao dịch mảnh liên tiếp nhanh chóng cố gắng huỷ một hiệu ứng chuyển đổi chưa bắt đầu và thư viện AndroidX Transition không xoá trạng thái chuyển đổi đúng cách. (xem b/414612221). (Ib5235)
Phiên bản 1.8.6
Ngày 12 tháng 2 năm 2025
Phát hành androidx.fragment:fragment-*:1.8.6. Phiên bản 1.8.6 bao gồm các thay đổi sau.
Sửa lỗi
- Lớp ghi đè
setOnApplyWindowInsetsListenercủaFragmentContainerViewhiện có một trình nghe rỗng, khớp với những gì mà khung cho phép. (I575f0, b/282790626)
Phiên bản 1.8.5
Ngày 30 tháng 10 năm 2024
Phát hành androidx.fragment:fragment-*:1.8.5. Phiên bản 1.8.5 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục một
IllegalStateExceptiondosaveBackStackkích hoạt chỉ sau khi cử chỉ Xem trước thao tác quay lại bị huỷ hoặc gián đoạn. (I3387d, b/342419080)
Phiên bản 1.8.4
Ngày 2 tháng 10 năm 2024
Phát hành androidx.fragment:fragment-*:1.8.4. Phiên bản 1.8.4 bao gồm các thay đổi này.
Sửa lỗi
- Khắc phục sự cố khi nhấn nhanh nút quay lại của hệ thống hoặc nhanh chóng thực hiện cử chỉ quay lại sẽ khiến các Mảnh gặp sự cố khi sử dụng hiệu ứng chuyển đổi Androidx. (Ibc038, b/364804225)
- Khắc phục một vấn đề trong các mảnh, trong đó việc làm gián đoạn một cử chỉ xem trước thao tác quay lại sẽ khiến trình quản lý mảnh chuyển sang trạng thái không xác định và thậm chí hiển thị sai mảnh. (If82e2, b/338624457)
- Khắc phục
UninitializedPropertyAccessExceptiontrongAndroidFragmentkhi tự động hoán đổi Lớp mà thực thểAndroidFragmentcủa bạn đang sử dụng. (I12dea)
Phiên bản 1.8.3
Ngày 4 tháng 9 năm 2024
Phát hành androidx.fragment:fragment-*:1.8.3. Phiên bản 1.8.3 bao gồm các thay đổi sau.
Sửa lỗi
FragmentManagerhiện xem xét chính xác các thao tác đang chờ xử lý khi xử lý cử chỉ Xem trước thao tác quay lại. Điều này sẽ đảm bảo rằng thao tác quay lại hệ thống sẽ không còn gây raIndexOutOfBoundsExceptionnữa. (I9ba32, b/342316801)AndroidFragmentkhông còn gặp sự cố nếu được thêm vào thành phần trong khi trạng thái của hoạt động/mảnh chứa đã được lưu. (I985e9, b/356643968)
Phiên bản 1.8.2
Ngày 24 tháng 7 năm 2024
Phát hành androidx.fragment:fragment-*:1.8.2. Phiên bản 1.8.2 bao gồm các thay đổi sau.
Sửa lỗi
- Giờ đây,
AndroidFragmentxử lý đúng cách các trường hợp mà mảnh mẹ được đặt trên ngăn xếp lui của Mảnh, tránh các vấn đề "Không tìm thấy khung hiển thị cho mã nhận dạng" khi bật lại mảnh đó. (I94608) - Các mảnh được thêm vào thông qua phương thức
FragmentTransaction.addsử dụng mộtViewGrouphiện đang chờonContainerAvailabletrước khi chuyển sangonStart(). Điều này ảnh hưởng đến người dùng API đó, chẳng hạn nhưAndroidFragment. Giờ đây,AndroidFragmentsẽ chờAndroidFragmentnhập lại thành phần trước khi di chuyển thành phần đó quaonStart(). (I94608)
Phiên bản 1.8.1
Ngày 26 tháng 6 năm 2024
Phát hành androidx.fragment:fragment-*:1.8.1. Phiên bản 1.8.1 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục vấn đề trong đó các mảnh không có vùng chứa sẽ ngay lập tức
DESTROYEDkhi bắt đầu một cử chỉ xem trước thao tác quay lại. Giờ đây, các thao tác này được giữ ở trạng tháiCREATEDcho đến khi cử chỉ hoàn tất. (If6b83, b/345244539)
Phiên bản 1.8.0
Ngày 12 tháng 6 năm 2024
Phát hành androidx.fragment:fragment-*:1.8.0. Phiên bản 1.8.0 bao gồm các thay đổi sau.
Những thay đổi quan trọng kể từ phiên bản 1.7.0
- Cấu phần phần mềm
fragment-composehiện chứa mộtAndroidFragmentComposablecho phép thêm các mảnh vào hệ phân cấp Compose thông qua tên lớp mảnh. Thao tác này tự động xử lý việc lưu và khôi phục trạng thái của Mảnh. Bạn nên dùng cách này để thay thế trực tiếp cho phương pháp được đề xuất trước đó là dùngAndroidViewBindingđể tăng kích thước một Mảnh. - Lệnh gọi lại
onBackStackChangeCancelledtrên giao diệnOnBackStackChangedListenercủaFragmentManagerhiện sẽ kích hoạt trong quá trình thực thi các thao tác trongFragmentManager, giúp lệnh gọi lại này gần với thời gian của lệnh gọi lạionBackStackChangeCommittedhơn.
Phiên bản 1.8.0-rc01
Ngày 29 tháng 5 năm 2024
Phát hành androidx.fragment:fragment-*:1.8.0-rc01. Phiên bản 1.8.0-rc01 bao gồm các thay đổi sau.
Sửa lỗi
- Lệnh gọi lại
onBackStackChangeCancelledtrên giao diệnFragmentManagers OnBackStackChangedListenerhiện kích hoạt trong quá trình thực thi các thao tác trongFragmentManager, giúp lệnh gọi lại này gần với thời gian của lệnh gọi lạionBackStackChangeCommittedhơn. (I5ebfb, b/332916112)
Phiên bản 1.8.0-beta01
Ngày 14 tháng 5 năm 2024
Phát hành androidx.fragment:fragment-*:1.8.0-beta01. Phiên bản 1.8.0-beta01 bao gồm các thay đổi sau.
Sửa lỗi
- Từ Mảnh
1.7.1: Giờ đây, tính năng xem trước thao tác quay lại sẽ chỉ chạy cho các giao dịch mà tất cả các mảnh đều có Trình tạo ảnh động hoặc Hiệu ứng chuyển đổi Androidx có thể tìm kiếm. Bản sửa lỗi này khắc phục vấn đề huỷ giao dịch có thể tìm kiếm một phần sẽ khiến màn hình bị đen. (I43037, b/339169168)
Phiên bản 1.8.0-alpha02
Ngày 17 tháng 4 năm 2024
Phát hành androidx.fragment:fragment-*:1.8.0-alpha02. Phiên bản 1.8.0-alpha02 bao gồm các thay đổi sau.
Sửa lỗi
- Từ Mảnh
1.7.0-rc02: Đã thêm nhật ký để cho biết lý do khiến việc thiết lậpsharedElementmà không có bất kỳ hiệu ứng chuyển đổi nào khác sẽ không chạy. (Iec48e) - Từ Mảnh
1.7.0-rc02: Sửa lỗi khi một phần tử dùng chung không thể tìm kiếm được thêm vào một giao dịch mà tất cả các hiệu ứng chuyển đổi khác đều có thể tìm kiếm được, thì sẽ xảy ra sự cố. Giờ đây, giao dịch sẽ được coi là không tìm kiếm được. (I18ccd)
Phiên bản 1.8.0-alpha01
Ngày 3 tháng 4 năm 2024
Phát hành androidx.fragment:fragment-*:1.8.0-alpha01. Phiên bản 1.8.0-alpha01 bao gồm các thay đổi sau.
Tính năng mới
AndroidFragmentComposablemới cho phép thêm các mảnh vào hệ phân cấp Compose thông qua tên lớp mảnh. Thao tác này tự động xử lý việc lưu và khôi phục trạng thái của Mảnh. Bạn có thể dùng thành phần này để thay thế trực tiếp choComposableAndroidViewBinding.(b/312895363, Icf841)
Thay đổi về tài liệu
- Cập nhật tài liệu cho các API
OnBackStackChangedListenerđể cho biết thời điểm gọi và cách sử dụng các API này. (I0bfd9)
Cập nhật các phần phụ thuộc
- Giờ đây, Fragment tuỳ thuộc vào Trình cài đặt hồ sơ 1.3.1.
Phiên bản 1.7
Phiên bản 1.7.1
Ngày 14 tháng 5 năm 2024
Phát hành androidx.fragment:fragment-*:1.7.1. Phiên bản 1.7.1 chứa những thay đổi đã được xác nhận này.
Sửa lỗi
- Giờ đây, tính năng xem trước thao tác quay lại sẽ chỉ chạy cho các giao dịch mà tất cả các mảnh đều có Trình tạo ảnh động hoặc hiệu ứng Chuyển đổi Androidx có thể tìm kiếm. Bản sửa lỗi này khắc phục vấn đề khi huỷ một giao dịch có thể tìm kiếm một phần sẽ khiến màn hình trống xuất hiện. (I43037, b/339169168)
Phiên bản 1.7.0
Ngày 1 tháng 5 năm 2024
Phát hành androidx.fragment:fragment-*:1.7.0. Phiên bản 1.7.0 chứa những thay đổi đã được xác nhận này.
Hỗ trợ cử chỉ xem trước thao tác quay lại
- Các mảnh hiện hỗ trợ tính năng Xem trước thao tác quay lại trong ứng dụng khi sử dụng
Animatorhoặc khi sử dụng AndroidX Transition 1.5.0. Điều này cho phép người dùng sử dụng cử chỉ quay lại để xem mảnh trước đó bằng cách tìm kiếm Animator/Transition trước khi quyết định xác nhận giao dịch bằng cách hoàn tất cử chỉ hoặc huỷ.
| Hệ thống chuyển đổi | Tài nguyên XML | Hỗ trợ tính năng Xem trước thao tác quay lại |
|---|---|---|
Animation |
R.anim |
Không |
Animator |
R.animator |
Có |
Framework Transition |
R.transition |
Không |
AndroidX Transition có Transition 1.4.1 trở xuống |
R.transition |
Không |
AndroidX Transition có Transition 1.5.0 |
R.transition |
Có |
Nếu bạn nhận thấy có vấn đề với tính năng Xem trước thao tác quay lại trong Mảnh sau khi chọn sử dụng cử chỉ xem trước thao tác quay lại, vui lòng báo cáo vấn đề đối với Mảnh kèm theo một dự án mẫu tái hiện vấn đề của bạn. Bạn có thể tắt tính năng xem trước thao tác quay lại bằng cách sử dụng FragmentManager.enabledPredictiveBack(false) trong onCreate() của Hoạt động.
FragmentManager.OnBackStackChangedListener() hiện cung cấp onBackStackChangeProgressed() và onBackStackChangeCancelled() để lần lượt nhận tiến trình xem trước thao tác quay lại và các sự kiện bị huỷ.
Fragment Compose Artifact
Một cấu phần phần mềm fragment-compose mới đã được tạo ra, tập trung vào việc hỗ trợ các ứng dụng đang trong quá trình chuyển từ cấu trúc dựa trên Mảnh sang cấu trúc hoàn toàn dựa trên Compose.
Tính năng đầu tiên có trong cấu phần phần mềm mới này là một phương thức mở rộng content trên Fragment. Phương thức này giúp bạn dễ dàng sử dụng Compose cho giao diện người dùng của một Fragment riêng lẻ bằng cách tạo một ComposeView cho bạn và đặt ViewCompositionStrategy chính xác.
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)
}
}
Phiên bản 1.7.0-rc02
Ngày 17 tháng 4 năm 2024
Phát hành androidx.fragment:fragment-*:1.7.0-rc02. Phiên bản 1.7.0-rc02 bao gồm các thay đổi sau.
Sửa lỗi
- Đã thêm nhật ký để cho biết lý do khiến việc đặt
sharedElementmà không có bất kỳ hiệu ứng chuyển đổi nào khác sẽ không chạy được. (Iec48e) - Khắc phục lỗi trong đó nếu một phần tử dùng chung không tìm kiếm được được thêm vào một giao dịch mà tất cả các quá trình chuyển đổi khác đều tìm kiếm được, thì sẽ xảy ra sự cố. Giờ đây, giao dịch sẽ được coi là không tìm kiếm được. (I18ccd)
Phiên bản 1.7.0-rc01
Ngày 3 tháng 4 năm 2024
Phát hành androidx.fragment:fragment-*:1.7.0-rc01. Phiên bản 1.7.0-rc01 bao gồm các thay đổi sau.
Cập nhật các phần phụ thuộc
- Giờ đây, Fragment tuỳ thuộc vào Trình cài đặt hồ sơ 1.3.1.
Phiên bản 1.7.0-beta01
Ngày 20 tháng 3 năm 2024
Phát hành androidx.fragment:fragment-*:1.7.0-beta01. Phiên bản 1.7.0-beta01 bao gồm các thay đổi sau.
Thay đổi về API
FragmentHostCallbackhiện được viết bằng Kotlin để tính chất rỗng của kiểu chung của Host khớp với tính chất rỗng của kiểu trả về củaonGetHost(). (I40af5)
Sửa lỗi
- Khắc phục một vấn đề trong đó khi thực hiện cử chỉ Xem trước thao tác quay lại trên một mảnh không nằm trong vùng chứa, mảnh đó sẽ không bao giờ bị huỷ. Giờ đây, Mảnh sẽ được chuyển ngay sang trạng thái cuối cùng. (Ida0d9)
- Khắc phục một vấn đề trong các Mảnh, trong đó việc làm gián đoạn các hiệu ứng chuyển đổi đến bằng cử chỉ Xem trước thao tác quay lại sẽ huỷ khung hiển thị đang nhập và để lại một màn hình trống. (Id3f22, b/319531491)
Phiên bản 1.7.0-alpha10
Ngày 7 tháng 2 năm 2024
Phát hành androidx.fragment:fragment-*:1.7.0-alpha10. Phiên bản 1.7.0-alpha10 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục vấn đề đã biết trong bản phát hành Mảnh trước đó, trong đó khi sử dụng tính năng hỗ trợ cử chỉ Xem trước thao tác quay lại của Mảnh cho
Animatorhoặc hiệu ứng chuyển đổi AndroidX, Mảnh sẽ gửi mộtNullPointerExceptiontừhandleOnBackProgressednếu chưa cóFragmentManager.OnBackStackChangedListenernào được thêm thông quaaddOnBackStackChangedListener. (I7c835)
Phiên bản 1.7.0-alpha09
Ngày 24 tháng 1 năm 2024
Phát hành androidx.fragment:fragment-*:1.7.0-alpha09. Phiên bản 1.7.0-alpha09 bao gồm các thay đổi sau.
Fragment Compose Artifact
Một cấu phần phần mềm fragment-compose mới đã được tạo ra, tập trung vào việc hỗ trợ các ứng dụng đang trong quá trình chuyển từ cấu trúc dựa trên Mảnh sang cấu trúc hoàn toàn dựa trên Compose.
Tính năng đầu tiên có trong cấu phần phần mềm mới này là một phương thức mở rộng content trên Fragment. Phương thức này giúp bạn dễ dàng sử dụng Compose cho giao diện người dùng của một Fragment riêng lẻ bằng cách tạo một ComposeView cho bạn và đặt ViewCompositionStrategy chính xác. (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)
}
}
Tính năng mới
FragmentManager.OnBackStackChangedListener()hiện cung cấponBackStackChangeProgressed()vàonBackStackChangeCancelled()để lần lượt nhận tiến trình xem trước thao tác quay lại và các sự kiện bị huỷ. (214b87)
Vấn đề đã biết
- Khi bạn sử dụng tính năng hỗ trợ cử chỉ Xem trước thao tác quay lại của Mảnh cho
Animatorhoặc hiệu ứng chuyển đổi AndroidX, các Mảnh sẽ gửi mộtNullPointerExceptiontừhandleOnBackProgressednếu chưa cóFragmentManager.OnBackStackChangedListenernào được thêm thông quaaddOnBackStackChangedListener. Việc thêm trình nghe theo cách thủ công sẽ khắc phục được sự cố này. Bản sửa lỗi cho vấn đề này sẽ có trong bản phát hành tiếp theo của Fragment.
Phiên bản 1.7.0-alpha08
Ngày 10 tháng 1 năm 2024
Phát hành androidx.fragment:fragment-*:1.7.0-alpha08. Phiên bản 1.7.0-alpha08 bao gồm các thay đổi sau.
Dọn dẹp
- Đã xoá giải pháp cho thư viện Transition (đã được sửa trong Transition
1.5.0-alpha06). (I04356)
Phiên bản 1.7.0-alpha07
Ngày 29 tháng 11 năm 2023
Phát hành androidx.fragment:fragment-*:1.7.0-alpha07. Phiên bản 1.7.0-alpha07 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục lỗi
NullPointerExceptiondo việc đặt một hiệu ứng chuyển đổi phần tử dùng chung và không đặt enter/exitTransition. (I8472b) - Từ Fragment
1.6.2: Khi Fragment củaFragmentContainerViewđược tăng cường, các trạng thái của Fragment (chẳng hạn nhưFragmentManager, Host và mã nhận dạng) hiện có thể truy cập được trong lệnh gọi lạionInflate. (I1e44c, b/307427423) - Từ Fragment
1.6.2: Khi bạn dùngclearBackStackđể xoá một nhóm mảnh, mọiViewModelcủa Fragment lồng nhau sẽ được xoá khiViewModelscủa mảnh mẹ được xoá. (I6d83c, b/296173018)
Phiên bản 1.7.0-alpha06
Ngày 4 tháng 10 năm 2023
Phát hành androidx.fragment:fragment-*:1.7.0-alpha06. Phiên bản 1.7.0-alpha06 bao gồm các thay đổi sau.
Cập nhật về phần phụ thuộc
- Các mảnh đã được cập nhật để phụ thuộc vào API
animateToStartmới được thêm vào Transition1.5.0-alpha04.
Phiên bản 1.7.0-alpha05
Ngày 20 tháng 9 năm 2023
Phát hành androidx.fragment:fragment-*:1.7.0-alpha05. Phiên bản 1.7.0-alpha05 bao gồm các thay đổi sau.
Tính năng mới
- Giờ đây, các mảnh hỗ trợ cử chỉ Xem trước thao tác quay lại khi sử dụng hiệu ứng chuyển đổi AndroidX. Điều này cho phép bạn sử dụng cử chỉ quay lại để tìm đến mảnh trước đó bằng hiệu ứng Chuyển đổi Androidx tuỳ chỉnh trước khi quyết định xác nhận hoặc huỷ giao dịch thông qua cử chỉ đã hoàn tất. Bạn phải phụ thuộc vào bản phát hành Transition
1.5.0-alpha03để bật tính năng này. (Ib49b4, b/285175724)
Lỗi đã biết
- Hiện tại, có một vấn đề là sau khi bạn huỷ một cử chỉ quay lại bằng một hiệu ứng chuyển đổi một lần, lần tiếp theo bạn bắt đầu cử chỉ quay lại, hiệu ứng chuyển đổi sẽ không chạy, gây ra màn hình trống. Nguyên nhân có thể là do vấn đề trong thư viện Transition. (b/300157785). Nếu bạn gặp phải vấn đề này, vui lòng báo cáo vấn đề đối với Fragment bằng một dự án mẫu tái hiện vấn đề của bạn. Bạn có thể tắt tính năng xem trước thao tác quay lại bằng cách sử dụng
FragmentManager.enabledPredictiveBack(false)trongonCreate()của Hoạt động.
Phiên bản 1.7.0-alpha04
Ngày 6 tháng 9 năm 2023
Phát hành androidx.fragment:fragment-*:1.7.0-alpha04. Phiên bản 1.7.0-alpha04 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục một vấn đề khi huỷ cử chỉ xem trước thao tác quay lại, trong đó các mảnh không chuyển sang trạng thái Vòng đời chính xác. (I7cffe, b/297379023)
- Đã khắc phục một lỗi hồi quy khi Ảnh động được phép chạy cùng với Hiệu ứng chuyển đổi. (I59f36)
- Khắc phục vấn đề khi sử dụng tính năng Xem trước thao tác quay lại với các mảnh, trong đó việc tìm cách quay lại hai lần liên tiếp trên mảnh áp chót trong ngăn xếp lui sẽ gây ra sự cố. (Ifa1a4)
Phiên bản 1.7.0-alpha03
Ngày 23 tháng 8 năm 2023
Phát hành androidx.fragment:fragment-*:1.7.0-alpha03. Phiên bản 1.7.0-alpha03 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục một vấn đề với các Mảnh khi sử dụng tính năng xem trước thao tác quay lại, khiến mảnh đầu tiên trong ngăn xếp quay lại của trình quản lý mảnh bị bỏ qua và Hoạt động kết thúc khi sử dụng thao tác quay lại của hệ thống thông qua chế độ thao tác bằng 3 nút hoặc cử chỉ xem trước thao tác quay lại. (I0664b, b/295231788)
Phiên bản 1.7.0-alpha02
Ngày 9 tháng 8 năm 2023
Phát hành androidx.fragment:fragment-*:1.7.0-alpha02. Phiên bản 1.7.0-alpha02 bao gồm các thay đổi sau.
Sửa lỗi
- Khi bạn dùng Mảnh với Cử chỉ xem trước thao tác quay lại từ API 34, nếu bạn đang dùng một hệ thống chuyển đổi không hỗ trợ tìm kiếm (
Animations,Transitions) hoặc không có quá trình chuyển đổi nào, thì giờ đây, Mảnh sẽ đợi cho đến khi cử chỉ hoàn tất rồi mới thực thi thao tác quay lại. (I8100c)
Phiên bản 1.7.0-alpha01
Ngày 7 tháng 6 năm 2023
Phát hành androidx.fragment:fragment-*:1.7.0-alpha01. Phiên bản này được phát triển trong một nhánh nội bộ.
Tính năng mới
- Giờ đây, các mảnh hỗ trợ tính năng Xem trước thao tác quay lại trong ứng dụng khi sử dụng
Animator. Điều này cho phép bạn sử dụng cử chỉ quay lại để xem mảnh trước bằng Animator tuỳ chỉnh trước khi quyết định xác nhận giao dịch thông qua cử chỉ đã hoàn tất hoặc huỷ. Bạn cũng có thể tắt hành vi mới này bằng cách sử dụngenablePredictiveBack()thử nghiệm và truyền vàofalse.
Phiên bản 1.6
Phiên bản 1.6.2
Ngày 1 tháng 11 năm 2023
Phát hành androidx.fragment:fragment-*:1.6.2. Phiên bản 1.6.2 bao gồm các thay đổi sau.
Sửa lỗi
- Khi Phân mảnh của
FragmentContainerViewđược tăng cường, các trạng thái của phân mảnh đó (chẳng hạn nhưFragmentManager, Máy chủ lưu trữ và mã nhận dạng) hiện có thể truy cập được trong lệnh gọi lạionInflate. (I1e44c, b/307427423) - Khi bạn dùng
clearBackStackđể xoá một nhóm mảnh, mọiViewModelcủa Fragment lồng nhau hiện sẽ bị xoá khiViewModelscủa mảnh mẹ bị xoá. (I6d83c, b/296173018)
Phiên bản 1.6.1
Ngày 26 tháng 7 năm 2023
Phát hành androidx.fragment:fragment-*:1.6.1. Phiên bản 1.6.1 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục vấn đề khi trạng thái đã lưu được lưu trữ khi hoạt động bị dừng nhưng không bị huỷ sẽ được lưu vào bộ nhớ đệm không chính xác ngay cả sau khi phiên bản mảnh được di chuyển trở lại trạng thái
RESUMED. Điều này sẽ khiến trạng thái được lưu vào bộ nhớ đệm đó được dùng lại nếu phiên bản mảnh đó nằm trên ngăn xếp lui khi sử dụng API nhiều ngăn xếp lui để lưu và khôi phục mảnh đó. (I71288, b/246289075)
Cập nhật về phần phụ thuộc
- Giờ đây, Fragment phụ thuộc vào Activity 1.7.2. Điều này khắc phục vấn đề khiến người dùng Kotlin không thể mở rộng
ComponentDialogmà không có sự phụ thuộc rõ ràng vào Activity. (b/287509323)
Phiên bản 1.6.0
Ngày 7 tháng 6 năm 2023
Phát hành androidx.fragment:fragment-*:1.6.0. Phiên bản 1.6.0 bao gồm các thay đổi sau.
Các thay đổi quan trọng kể từ phiên bản 1.5.0
- Trạng thái
Fragmentđã lưu được tách hoàn toàn giữa trạng thái thư viện riêng tư (các lớpParcelabletuỳ chỉnh) và trạng thái do nhà phát triển cung cấp. Trạng thái này luôn được lưu trữ trongBundlecho phép xác định chính xác vị trí nơi bắt nguồn trạng thái của mảnh. - Giao diện
FragmentManager.OnBackStackChangedListenerđã được mở rộng với 2 lệnh gọi lại bổ sung làonBackStackChangeStartedvàonBackStackChangeCommitted. Các lệnh gọi lại này được gọi với mỗiFragmentngay trước khi chúng được thêm/xoá khỏi ngăn xếp lui của mảnh và ngay sau khi giao dịch được xác nhận, tương ứng. FragmentStrictModeđã thêm mộtWrongNestedHierarchyViolationmới phát hiện thời điểm một mảnh con được lồng vào Hệ phân cấp khung hiển thị của mảnh mẹ, nhưng không được thêm vàochildFragmentManagercủa mảnh mẹ.- Giờ đây, các API
FragmentvàFragmentManagerdùngIntenthoặcIntentSendersẽ được chú giải đúng cách bằng@NonNullđể ngăn việc truyền giá trị rỗng vì giá trị rỗng sẽ luôn gây ra sự cố ngay lập tức cho các Android framework API (API khung Android) tương ứng mà các phương thức này gọi vào. DialogFragmenthiện cung cấp quyền truy cập vàoComponentDialogcơ bản thông qua APIrequireComponentDialog().- Giờ đây, Mảnh phụ thuộc vào Vòng đời
2.6.1. - Giờ đây, Fragment phụ thuộc vào SavedState
1.2.1. - Giờ đây, Fragment phụ thuộc vào ProfileInstaller
1.3.0. Cấu phần phần mềm
fragment-testing-manifesttách các mục nhập tệp kê khai khỏi phần còn lại của các thành phần kiểm thử mảnh. Do đó, bạn có thể làm như sau:debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z") androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")Điều này giúp tránh xung đột do sự sai lệch phiên bản giữa
fragment-testingvàandroidx.test
Phiên bản 1.6.0-rc01
Ngày 10 tháng 5 năm 2023
Phát hành androidx.fragment:fragment-*:1.6.0-rc01. Phiên bản 1.6.0-rc01 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục vấn đề khiến
ActivityResultđược gửi kèm mã yêu cầu không chính xác khi có nhiều yêu cầustartActivityForResultđược thực hiện liên tiếp. (If0b9d, b/249519359) - Khắc phục vấn đề về việc các lệnh gọi lại
onBackStackChangeListenerđược gửi cho những giao dịch không thực sự thay đổi ngăn xếp lui nếu chúng được kết hợp với những giao dịch có thay đổi. (I0eb5c, b/279306628)
Phiên bản 1.6.0-beta01
Ngày 19 tháng 4 năm 2023
Phát hành androidx.fragment:fragment-*:1.6.0-beta01. Phiên bản 1.6.0-beta01 bao gồm các thay đổi sau.
Sửa lỗi
- Việc sử dụng
postponeEnterTransitionvới thời gian chờ rồi thay thế mảnh bị trì hoãn sẽ không còn dẫn đến việc rò rỉ mảnh bị trì hoãn. (I2ec7d, b/276375110) - Giờ đây, các lệnh gọi lại
onBackStackChangeStartedvàonBackStackChangeCommittedmới sẽ chỉ gửi một mảnh duy nhất một lần, ngay cả khi nhiều giao dịch chứa cùng một mảnh. (Ic6b69)
Phiên bản 1.6.0-alpha09
Ngày 5 tháng 4 năm 2023
Phát hành androidx.fragment:fragment-*:1.6.0-alpha09. Phiên bản 1.6.0-alpha09 bao gồm các thay đổi sau.
Thay đổi về API
DialogFragmenthiện cung cấp quyền truy cập vàoComponentDialogcơ bản thông qua APIrequireComponentDialog(). (I022e3, b/234274777)- Các API mảnh
commitNow(),executePendingTransactions()vàpopBackStackImmediate()đã được chú thích bằng@MainThread, nghĩa là giờ đây, tất cả các API này sẽ gửi lỗi bản dựng khi không được gọi từ luồng chính thay vì chờ lỗi trong thời gian chạy. (Ic9665, b/236538905)
Sửa lỗi
- Khắc phục lỗi trong
FragmentManagerkhiến việc lưu và khôi phục trong cùng một khung hình có thể gây ra sự cố. (Ib36af, b/246519668) - Giờ đây, các lệnh gọi lại
OnBackStackChangedListeneronBackStackChangeStartedvàonBackStackChangeCommittedchỉ thực thi khi ngăn xếp luiFragmentManagerthay đổi. (I66055, b/274788957)
Phiên bản 1.6.0-alpha08
Ngày 22 tháng 3 năm 2023
Phát hành androidx.fragment:fragment-*:1.6.0-alpha08. Phiên bản 1.6.0-alpha08 bao gồm các thay đổi sau.
Thay đổi về hành vi
- Thời gian của lệnh gọi lại
OnBackStackChangedListener.onBackStackChangeCommitedđã được điều chỉnh để thực thi trước khi các thao tác trên mảnh được thực thi. Điều này đảm bảo rằng lệnh gọi lại sẽ không bao giờ được truyền một mảnh bị tách rời. (I66a76, b/273568280)
Sửa lỗi
- Từ Fragment
1.5.6: Khắc phục vấn đề khi việc gọiclearFragmentResultListenerbên trongsetFragmentResultListenersẽ không hoạt động nếuLifecycleđãSTARTEDvà đã có kết quả. (If7458)
Thông tin cập nhật về phần phụ thuộc
- Giờ đây, Mảnh phụ thuộc vào Vòng đời
2.6.1. (586fe7) - Giờ đây, Fragment phụ thuộc vào SavedState
1.2.1. (078e4e) - Giờ đây, Fragment phụ thuộc vào ProfileInstaller
1.3.0. (3fc05b)
Phiên bản 1.6.0-alpha07
Ngày 8 tháng 3 năm 2023
Phát hành androidx.fragment:fragment-*:1.6.0-alpha07. Phiên bản 1.6.0-alpha07 bao gồm các thay đổi sau.
Sửa lỗi
- Từ Fragment
1.5.6: Khắc phục vấn đề khi việc xoá bất kỳ Mảnh nào, dù đã thêm các mục trong Trình đơn hay chưa, đều sẽ làm mất hiệu lực trình đơn của hoạt động. (50f098, b/244336571)
Phiên bản 1.6.0-alpha06
Ngày 22 tháng 2 năm 2023
Phát hành androidx.fragment:fragment-*:1.6.0-alpha06. Phiên bản 1.6.0-alpha06 bao gồm các thay đổi sau.
Thay đổi về hành vi
- Giờ đây, lệnh gọi lại
onBackStackChangedStartedmới trênonBackStackChangedListenercủaFragmentManagersẽ được thực thi trước khi các mảnh bắt đầu chuyển sang trạng thái mục tiêu. (I34726)
Phiên bản 1.6.0-alpha05
Ngày 8 tháng 2 năm 2023
Phát hành androidx.fragment:fragment-*:1.6.0-alpha05. Phiên bản 1.6.0-alpha05 bao gồm các thay đổi sau.
Tính năng mới
- Giờ đây, giao diện
FragmentManager.OnBackStackChagnedListenercung cấp thêm hai lệnh gọi lại làonBackStackChangeStartedvàonBackStackChangeCommitted, cho phép bổ sung thêm thông tin và kiểm soát thời điểm xảy ra các thay đổi về ngăn xếp lui trongFragmentManager. (Ib7ce5, b/238686802)
Những thay đổi về API
- Giờ đây, các API
FragmentvàFragmentManagerdùngIntenthoặcIntentSendersẽ được chú giải đúng cách bằng@NonNullđể ngăn việc truyền giá trị rỗng vì giá trị rỗng sẽ luôn gây ra sự cố ngay lập tức cho các Android framework API (API khung Android) tương ứng mà các phương thức này gọi vào. (I06fd4)
Phiên bản 1.6.0-alpha04
Ngày 7 tháng 12 năm 2022
Phát hành androidx.fragment:fragment-*:1.6.0-alpha04. Phiên bản 1.6.0-alpha04 bao gồm các thay đổi sau.
Tính năng mới
FragmentStrictModeđã thêm mộtWrongNestedHierarchyViolationmới phát hiện thời điểm một mảnh con được lồng vào Hệ phân cấp khung hiển thị của mảnh mẹ, nhưng không được thêm vàochildFragmentManagercủa mảnh mẹ. (I72521, b/249299268)
Các thay đổi về hành vi
- Giờ đây, các mảnh sẽ khôi phục trạng thái
SavedStateRegistrytrướconAttach(), đảm bảo rằng trạng thái có sẵn trong tất cả các phương thức vòng đời dịch chuyển lên. (I1e2b1)
Các thay đổi về API
- Cấu phần phần mềm
fragment-testing-manifesttách các mục nhập tệp kê khai khỏi phần còn lại của các thành phần kiểm thử mảnh. Do đó, bạn có thể làm như sau:
debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z")
androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")
Điều này giúp tránh xung đột do sự sai lệch phiên bản giữa fragment-testing và androidx.test. (I8e534, b/128612536)
Sửa lỗi
- Từ Mảnh
1.5.5: Các mảnh sẽ không còn lưu sai trạng tháiViewModelnhư là một phần trong trạng thái đăng ký khung hiển thị đã lưu. (I10d2b, b/253546214)
Phiên bản 1.6.0-alpha03
Ngày 5 tháng 10 năm 2022
Phát hành androidx.fragment:fragment:1.6.0-alpha03, androidx.fragment:fragment-ktx:1.6.0-alpha03 và androidx.fragment:fragment-testing:1.6.0-alpha03. Phiên bản 1.6.0-alpha03 bao gồm các thay đổi sau.
Các thay đổi về API
- Giờ đây, các lớp mở rộng
DialogFragmentsẽ phải gọi super trong phần ghi đèonDismiss(). (I14798, b/238928865)
Sửa lỗi
- Khắc phục các lỗi hồi quy do việc tích hợp giao diện gọi lại mới của nhà cung cấp (
OnConfigurationChangedProvider,OnMultiWindowModeChangedProvider,OnTrimMemoryProvider,OnPictureInPictureModeChangedProvider) để đảm bảo các mảnh luôn nhận được đúng lệnh gọi lại. (I9b380,I34581, (I8dfe6, b/242570955),If9d6b,Id0096,I690b3,I2cba2)
Phiên bản 1.6.0-alpha02
Ngày 24 tháng 8 năm 2022
Phát hành androidx.fragment:fragment:1.6.0-alpha02, androidx.fragment:fragment-ktx:1.6.0-alpha02 và androidx.fragment:fragment-testing:1.6.0-alpha02. Phiên bản 1.6.0-alpha02 bao gồm các thay đổi sau.
Sửa lỗi
- Từ Mảnh
1.5.2: Khắc phục tình trạng thực thi giao dịchpopBackStack()vàreplace()cùng lúc có thể khiến các mảnh thoát ra chạy không chính xácAnimation/Animator. (Ib1c07, b/214835303)
Phiên bản 1.6.0-alpha01
Ngày 27 tháng 7 năm 2022
Phát hành androidx.fragment:fragment:1.6.0-alpha01, androidx.fragment:fragment-ktx:1.6.0-alpha01 và androidx.fragment:fragment-testing:1.6.0-alpha01. Phiên bản 1.6.0-alpha01 bao gồm các thay đổi sau.
Các thay đổi về hành vi
- Trạng thái
Fragmentđã lưu được tách hoàn toàn giữa trạng thái thư viện riêng tư (các lớpParcelabletuỳ chỉnh) và trạng thái do nhà phát triển cung cấp. Trạng thái này luôn được lưu trữ trongBundlecho phép xác định chính xác vị trí nơi bắt nguồn trạng thái của mảnh. (b/207158202)
Sửa lỗi
- Từ Mảnh
1.5.1: Khắc phục lỗi hồi quy trongDialogFragmentCallbacksDetector, trong đó việc sử dụng phiên bản tìm lỗi mã nguồn đi kèm với AGP 7.4 sẽ khiến công cụ tìm lỗi mã nguồn gặp sự cố. (b/237567009)
Cập nhật các phần phụ thuộc
- Từ Mảnh
1.5.1: Thư viện mảnh hiện phụ thuộc vào Vòng đời2.5.1. (Id204c) - Từ Mảnh
1.5.1: Thư viện Mảnh hiện phụ thuộc vào Hoạt động1.5.1. (I10f07)
Phiên bản 1.5
Phiên bản 1.5.7
Ngày 19 tháng 4 năm 2023
Phát hành androidx.fragment:fragment:1.5.7, androidx.fragment:fragment-ktx:1.5.7 và androidx.fragment:fragment-testing:1.5.7. Phiên bản 1.5.7 bao gồm các thay đổi sau.
Sửa lỗi
- Việc sử dụng
postponeEnterTransitionvới thời gian chờ rồi thay thế mảnh bị trì hoãn sẽ không còn dẫn đến việc rò rỉ mảnh bị trì hoãn. (I2ec7d, b/276375110)
Phiên bản 1.5.6
Ngày 22 tháng 3 năm 2023
Phát hành androidx.fragment:fragment:1.5.6, androidx.fragment:fragment-ktx:1.5.6 và androidx.fragment:fragment-testing:1.5.6. Phiên bản 1.5.6 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục vấn đề trong đó việc xoá bất kỳ Mảnh nào (cho dù Mảnh đó đã thêm các mục trong Trình đơn hay chưa) đều sẽ làm mất hiệu lực trình đơn của hoạt động. (50f098, b/244336571)
- Khắc phục vấn đề khi việc gọi
clearFragmentResultListenerbên trongsetFragmentResultListenersẽ không hoạt động nếuLifecycleđã làSTARTEDvà đã có kết quả. (If7458)
Phiên bản 1.5.5
Ngày 7 tháng 12 năm 2022
Phát hành androidx.fragment:fragment:1.5.5, androidx.fragment:fragment-ktx:1.5.5 và androidx.fragment:fragment-testing:1.5.5. Phiên bản 1.5.5 bao gồm các thay đổi sau.
Sửa lỗi
- Mảnh sẽ không còn lưu sai trạng thái
ViewModelnhư một phần của trạng thái đăng ký khung hiển thị đã lưu. (I10d2b, b/253546214)
Phiên bản 1.5.4
Ngày 24 tháng 10 năm 2022
Phát hành androidx.fragment:fragment:1.5.4, androidx.fragment:fragment-ktx:1.5.4 và androidx.fragment:fragment-testing:1.5.4. Phiên bản 1.5.4 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục lỗi không điều phối được đến các mảnh con khi sử dụng
FragmentControllertuỳ chỉnh với máy chủ không triển khai giao diện gọi lại của nhà cung cấp (OnConfigurationChangedProvider,OnMultiWindowModeChangedProvider,OnTrimMemoryProvider,OnPictureInPictureModeChangedProvider) và khi gọi hàm điều phối không dùng nữa. (I9b380)
Phiên bản 1.5.3
Ngày 21 tháng 9 năm 2022
Phát hành androidx.fragment:fragment:1.5.3, androidx.fragment:fragment-ktx:1.5.3 và androidx.fragment:fragment-testing:1.5.3. Phiên bản 1.5.3 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục lỗi khiến các mảnh trên ngăn xếp lui nhận được lệnh gọi lại
onMultiWindowModeChanged(),onPictureInPictureModeChanged(),onLowMemory()vàonConfigurationChanged(). (I34581, I8dfe6, b/242570955) - Các mảnh con lồng nhau sẽ không nhận được nhiều lệnh gọi lại
onMultiWindowModeChanged(),onPictureInPictureModeChanged(),onLowMemory()hoặconConfigurationChanged()nữa. (I690b3, Id0096, If9d6b, I2cba2)
Phiên bản 1.5.2
Ngày 10 tháng 8 năm 2022
Phát hành androidx.fragment:fragment:1.5.2, androidx.fragment:fragment-ktx:1.5.2 và androidx.fragment:fragment-testing:1.5.2. Phiên bản 1.5.2 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục vấn đề thực thi giao dịch
popBackStack()vàreplace()cùng lúc có thể khiến các mảnh thoát ra chạy không chính xácAnimation/Animator. (Ib1c07, b/214835303)
Phiên bản 1.5.1
Ngày 27 tháng 7 năm 2022
Phát hành androidx.fragment:fragment:1.5.1, androidx.fragment:fragment-ktx:1.5.1 và androidx.fragment:fragment-testing:1.5.1. Phiên bản 1.5.1 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục lỗi hồi quy trong
DialogFragmentCallbacksDetectormà trong đó việc sử dụng phiên bản tìm lỗi mã nguồn đi kèm với AGP 7.4 sẽ khiến công cụ tìm lỗi mã nguồn gặp sự cố. (b/237567009)
Cập nhật các phần phụ thuộc
- Thư viện Mảnh hiện phụ thuộc vào Vòng đời
2.5.1. (Id204c) - Thư viện Mảnh hiện phụ thuộc vào Hoạt động
1.5.1. (I10f07)
Phiên bản 1.5.0
Ngày 29 tháng 6 năm 2022
Phát hành androidx.fragment:fragment:1.5.0, androidx.fragment:fragment-ktx:1.5.0 và androidx.fragment:fragment-testing:1.5.0. Phiên bản 1.5.0 bao gồm các thay đổi sau.
Thay đổi quan trọng kể từ phiên bản 1.4.0
- Tích hợp CreationExtras –
Fragmenthiện có khả năng cung cấpViewModelProvider.Factorykhông có trạng thái quaCreationExtrascủa Vòng đời2.5.0. - Tích hợp hộp thoại thành phần –
DialogFragmentnay sử dụngComponentDialogthông qua Hoạt động1.5.0làm hộp thoại mặc định doonCreateDialog()trả về. - Tái cấu trúc trạng thái bản sao đã lưu – Mảnh đã bắt đầu thay đổi cách lưu trạng thái của thực thể. Đây là một nỗ lực để giúp xác định rõ trạng thái đã được lưu trong mảnh và nguồn của trạng thái. Sau đây là một số thay đổi hiện tại:
- Giờ đây,
FragmentManagersẽ lưu giữ trạng thái của thực thể đã lưu vàoBundlethay vì lưu trực tiếp vàoParcelabletuỳ chỉnh. - Kết quả được thiết lập qua
Fragment Result APIschưa được phân phối hiện được lưu riêng từ trạng thái nội bộ củaFragmentManager. - Trạng thái liên kết với từng mảnh riêng lẻ hiện được lưu riêng biệt với trạng thái bên trong của
FragmentManager, do đó cho phép bạn tương quan lượng trạng thái đã lưu liên kết giữa một mảnh riêng lẻ với các mã nhận dạng duy nhất có trong nhật ký gỡ lỗiFragment.
- Giờ đây,
Các thay đổi khác
- Giờ đây,
FragmentStrictModecho phép các mảnh riêng tư của bên thứ ba bỏ qua các lỗi vi phạm cụ thể bằng cách sử dụngallowViolation()cùng với tên lớp. - Ngừng sử dụng Fragment API để cung cấp trình đơn cho
ActionBarcủa hoạt động. APIMenuHostvàMenuProviderđược thêm vào Hoạt động1.4.0cung cấp một API tương đương có thể thử nghiệm cũng như nhận biết vòng đời mà các mảnh nên sử dụng.
Phiên bản 1.5.0-rc01
Ngày 11 tháng 5 năm 2022
Phát hành androidx.fragment:fragment:1.5.0-rc01, androidx.fragment:fragment-ktx:1.5.0-rc01 và androidx.fragment:fragment-testing:1.5.0-rc01. Phiên bản 1.5.0-rc01 bao gồm bao gồm các thay đổi sau.
Tái cấu trúc trạng thái thực thể đã lưu
- Trạng thái liên kết với từng mảnh riêng lẻ hiện được lưu riêng biệt với trạng thái bên trong của
FragmentManager, do đó cho phép bạn so sánh tương quan lượng trạng thái đã lưu liên kết giữa một mảnh riêng lẻ với các mã nhận dạng duy nhất có trong Nhật ký gỡ lỗi mảnh. (a153e0, b/207158202)
Phiên bản 1.5.0-beta01
Ngày 20 tháng 4 năm 2022
Phát hành androidx.fragment:fragment:1.5.0-beta01, androidx.fragment:fragment-ktx:1.5.0-beta01 và androidx.fragment:fragment-testing:1.5.0-beta01. Phiên bản 1.5.0-beta01 bao gồm các thay đổi sau.
Các thay đổi về API
DialogFragmentđã thêm một phương thứcdismissNowmới sử dụngcommitNowđể cân đối với hàmshowNow. Lưu ý thao tác này sẽ không khiếnDialogbị loại bỏ ngay mà chỉ cập nhật đồng bộ trạng thái củaFragmentManager. (I15c36, b/72644830)
Tái cấu trúc trạng thái thực thể đã lưu
- Giờ đây,
FragmentManagersẽ lưu giữ trạng thái của thực thể đã lưu vàoBundlethay vì lưu trực tiếp vàoParcelabletuỳ chỉnh. Đây là bước đầu để cung cấp thông tin chi tiết hơn về những nội dung được Fragment (Mảnh) lưu. (I93807, b/207158202) - Kết quả được thiết lập qua API kết quả mảnh chưa phân phối hiện được lưu riêng trong trạng thái nội bộ của
FragmentManager. Việc này giúp bạn có thêm thông tin chi tiết hơn về kết quả đang được lưu như một phần của trạng thái thực thể đã lưu của bạn. (I6ea12, b/207158202)
Phiên bản 1.5.0-alpha05
Ngày 6 tháng 4 năm 2022
Phát hành androidx.fragment:fragment:1.5.0-alpha05, androidx.fragment:fragment-ktx:1.5.0-alpha05 và androidx.fragment:fragment-testing:1.5.0-alpha05. Phiên bản 1.5.0-alpha05 bao gồm các thay đổi sau.
Các thay đổi về API
setHasOptionsMenu()củaFragmentđã ngừng hoạt động. Để quản lý trình đơn và các mục trong trình đơn, bạn nên dùng các API trình đơn mới theo Ghi chú phát hành của mảnh1.5.0-alpha04. (I7b4b4, b/226438239)
Phiên bản 1.5.0-alpha04
Ngày 23 tháng 3 năm 2022
Phát hành androidx.fragment:fragment:1.5.0-alpha04, androidx.fragment:fragment-ktx:1.5.0-alpha04 và androidx.fragment:fragment-testing:1.5.0-alpha04. Phiên bản 1.5.0-alpha04 bao gồm các thay đổi sau.
Các thay đổi về API
- Ngừng sử dụng Fragment API để cung cấp trình đơn cho
ActionBarcủa hoạt động vì chúng liên kết chặt chẽ mảnh với hoạt động của bạn và không thể kiểm thử một cách riêng biệt. APIMenuHostvàMenuProviderđược thêm vào Hoạt động1.4.0-alpha01cung cấp một API tương đương có thể kiểm thử cũng như nhận biết vòng đời mà các mảnh nên sử dụng. (I50a59, I20758)
Sửa lỗi
SavedStateViewFactoryhiện hỗ trợ việc sử dụngCreationExtrasngay cả khi được khởi tạo bằngSavedStateRegistryOwner. Nếu bạn cung cấp thông số bổ sung, các đối số đã khởi tạo sẽ bị bỏ qua. (I6c43b, b/224844583)
Phiên bản 1.5.0-alpha03
Ngày 23 tháng 2 năm 2022
Phát hành androidx.fragment:fragment:1.5.0-alpha03, androidx.fragment:fragment-ktx:1.5.0-alpha03 và androidx.fragment:fragment-testing:1.5.0-alpha03. Phiên bản 1.5.0-alpha03 bao gồm các thay đổi sau.
Các thay đổi về API
- Bây giờ, bạn có thể chuyển
CreationExtrasvào hàmby viewModels()vàby activityViewModels(). (Ibefe7, b/217601110)
Các thay đổi về hành vi
- Giờ đây,
DialogFragmentsử dụngComponentDialoglàm hộp thoại mặc định doonCreateDialog()trả về. (If3784, b/217618170)
Phiên bản 1.5.0-alpha02
Ngày 9 tháng 2 năm 2022
Phát hành androidx.fragment:fragment:1.5.0-alpha02, androidx.fragment:fragment-ktx:1.5.0-alpha02 và androidx.fragment:fragment-testing:1.5.0-alpha02. Phiên bản 1.5.0-alpha02 bao gồm các thay đổi sau.
Tính năng mới
- Giờ đây,
FragmentStrictModecho phép các mảnh riêng tư của bên thứ ba bỏ qua các lỗi vi phạm cụ thể bằng cách sử dụngallowViolation()cùng với tên lớp. (I8f678)
Phiên bản 1.5.0-alpha01
Ngày 26 tháng 1 năm 2022
Phát hành androidx.fragment:fragment:1.5.0-alpha01, androidx.fragment:fragment-ktx:1.5.0-alpha01 và androidx.fragment:fragment-testing:1.5.0-alpha01. Phiên bản 1.5.0-alpha01 bao gồm các thay đổi sau.
Tính năng mới
Fragmenthiện tích hợp với ViewModel CreatorsExtras, được đưa vào làm một phần của Vòng đời2.5.0-alpha01. (I3060b, b/207012585)
Sửa lỗi
- Từ Mảnh
1.4.1:FragmentContainerViewkhông còn gửi ngoại lệ về trạng thái không hợp lệ khi mã nhận dạng khung hiển thị được tạo bằng xml có các giá trị âm. (Ic185b, b/213086140) - Từ Fragment
1.4.1: Khi sử dụng lambdaownerProducertuỳ chỉnh với hàm lườiby viewModels(), thì hàm lười đó sẽ sử dụngdefaultViewModelProviderFactorytừ chủ sở hữu đó nếuViewModelProvider.Factorytuỳ chỉnh không được cung cấp thay vì luôn sử dụng phương thức nhà máy của mảnh. (I56170, b/214106513) - Khắc phục sự cố khi truy cập vào
ViewModellần đầu tiên từ lệnh gọi lạiregisterForActivityResult()củaFragment. (Iea2b3)
Phiên bản 1.4
Phiên bản 1.4.1
Ngày 26 tháng 1 năm 2022
Phát hành androidx.fragment:fragment:1.4.1, androidx.fragment:fragment-ktx:1.4.1 và androidx.fragment:fragment-testing:1.4.1. Phiên bản 1.4.1 bao gồm các thay đổi sau.
Sửa lỗi
FragmentContainerViewkhông còn gửi trường hợp ngoại lệ về trạng thái không hợp lệ khi mã nhận dạng khung hiển thị được tạo bằng xml có các giá trị âm. (Ic185b, b/213086140)- Khi sử dụng lambda
ownerProducertuỳ chỉnh với hàm lazyby viewModels(), thì hàm lazy đó sẽ sử dụngdefaultViewModelProviderFactorytừ chủ sở hữu đó nếuViewModelProvider.Factorytuỳ chỉnh không được cung cấp thay vì luôn sử dụng phương thức nhà máy của mảnh. (I56170, b/214106513)
Phiên bản 1.4.0
Ngày 17 tháng 11 năm 2021
Phát hành androidx.fragment:fragment:1.4.0, androidx.fragment:fragment-ktx:1.4.0 và androidx.fragment:fragment-testing:1.4.0. Phiên bản 1.4.0 bao gồm các thay đổi sau.
Thay đổi quan trọng kể từ phiên bản 1.3.0
- API
FragmentStrictModecung cấp quy trình kiểm tra thời gian chạy cho phép bạn xác minh rằng ứng dụng hoặc thư viện mà bạn phụ thuộc hiện không gọi các API mảnh không dùng nữa. Khi phát hiện lỗi vi phạm, bạn có thể chọn in thông điệp nhật ký, kích hoạt trình nghe tuỳ chỉnh của riêng mình hoặc đóng ứng dụng. Bạn có thể thiết lậpFragmentStrictMode.Policykiểm soát những yếu tố kiểm tra được bật và những yếu tố "bị phạt" được kích hoạt trênFragmentManagerthông qua phương thứcsetStrictModePolicy()mới. Chính sách đó áp dụng choFragmentManagervà áp dụng tạm thời cho tất cả những trình quản lý mảnh con chưa tự đặt chính sách riêng biệt của họ. Xem StrictMode cho Fragment. FragmentContainerViewhiện cung cấp phương thứcgetFragment()trả về mảnh mới nhất được thêm vào vùng chứa. Điều này sử dụng cùng logic nhưfindFragmentById()với mã nhận dạng củaFragmentContainerView, nhưng cho phép tạo chuỗi cuộc gọi.val navController = binding.container.getFragment<NavHostFragment>().navControllerGiờ đây,
FragmentScenariotriển khaiCloseable, cho phép bạn sử dụng nó với phương thứcusecủa Kotlin hoặc try-with-resources.Thêm
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}để chỉ rõ liệu bạn có muốn bật ảnh động chuyển đổi Hoạt động chuẩn được lấy từ giao diện trong phần chuyển đổi Mảnh hay không.API thử nghiệm của
FragmentManager.enableNewStateManager(boolean)đã bị xoá và giờ đây, trình quản lý trạng thái mới là tuỳ chọn duy nhất hiện có.
Nhiều ngăn xếp lui
FragmentManager duy trì ngăn xếp lui được tạo thành từ các giao dịch mảnh sử dụng addToBackStack(). Điều này cho phép bạn hiển thị các giao dịch đó và quay lại trạng thái trước, sử dụng cơ chế Lưu trạng thái với các mảnh để cho phép các mảnh khôi phục lại trạng thái của chúng một cách thích hợp.
Bản phát hành này mở rộng các cơ chế này bằng cách cung cấp 3 API FragmentManager mới: saveBackStack(String name), restoreBackStack(String name) và clearBackStack(String name). Các API này sử dụng cùng name với addToBackStack() để lưu trạng thái của FragmentTransaction và trạng thái của mọi mảnh đã được thêm vào trong các giao dịch đó, đồng thời cho phép bạn khôi phục các giao dịch đó và các mảnh của chúng ở trạng thái được giữ nguyên. Điều này cho phép bạn "hoán đổi" hiệu quả giữa nhiều ngăn xếp lui bằng cách lưu ngăn xếp lui hiện tại và khôi phục một ngăn xếp lui đã lưu.
saveBackStack() hoạt động tương tự như popBackStack() ở chỗ đây là phương thức không đồng bộ dẫn đến việc tất cả các giao dịch mảnh quay lại tên cụ thể đó sẽ bị đảo ngược ("bật lên") và mọi mảnh đã thêm vào sẽ bị huỷ bỏ cũng như bị xoá, nhưng lại khác biệt theo một số cách quan trọng:
saveBackStack()luôn bao hàm.- Không giống như
popBackStack()sẽ hiển thị tất cả giao dịch trên ngăn xếp lui nếu không tìm thấy tên đã chỉ định trên ngăn xếp lui hoặc nếu tên rỗng,saveBackStack()sẽ không thực hiện hành động nào nếu trước đây bạn chưa xác nhận một giao dịch mảnh sử dụngaddToBackStack()có tên chính xác, không phải là tên rỗng. - Trạng thái của tất cả các mảnh đã thêm vào từ những giao dịch đó được lưu lại. Điều này có nghĩa là trạng thái Khung hiển thị của mỗi mảnh được lưu trữ,
onSaveInstanceState()của mỗi mảnh được gọi và trạng thái đó được khôi phục, đồng thời bất kỳ thực thểViewModelnào có liên quan đến các mảnh đó đều được giữ lại (vàonCleared()không được gọi trên các mảnh đó).
Các giao dịch mảnh có thể được dùng với saveBackStack() phải đáp ứng một số tiêu chí nhất định:
- Mọi giao dịch mảnh phải sử dụng
setReorderingAllowed(true)để đảm bảo giao dịch có thể được khôi phục dưới dạng một hoạt động nguyên tử. - Tập hợp giao dịch đã lưu phải là một tập hợp độc lập (nghĩa là các giao dịch này không được tham chiếu rõ ràng đến bất kỳ mảnh nào bên ngoài tập hợp giao dịch đó) để đảm bảo rằng sau này, những giao dịch đó có thể được khôi phục bất cứ lúc nào, bất kể mọi thay đổi đã thực hiện đối với ngăn xếp lui trong thời gian gián đoạn.
- Không có mảnh nào được lưu có thể là mảnh được giữ lại hoặc có mảnh được giữ lại trong tập hợp chuyển đổi của các mảnh con để đảm bảo rằng
FragmentManagerkhông trả về bất kỳ tham chiếu nào đến các mảnh đã lưu sau khi lưu ngăn xếp lui.
Tương tự như saveBackStack(), nếu trước đó bạn chưa gọi saveBackStack() với cùng tên thì restoreBackStack() sẽ không khôi phục ngăn xếp lui đã lưu trước đó và clearBackStack() sẽ không xoá ngăn xếp lui đã lưu trước đó.
Để biết thêm thông tin, hãy xem phần Nhiều ngăn xếp lui: Tìm hiểu chuyên sâu.
Phiên bản 1.4.0-rc01
Ngày 3 tháng 11 năm 2021
androidx.fragment:fragment:1.4.0-rc01 được phát hành mà không có thay đổi nào từ Fragment 1.4.0-beta01. Phiên bản 1.4.0-rc01 bao gồm các thay đổi sau.
Phiên bản 1.4.0-beta01
Ngày 27 tháng 10 năm 2021
Phát hành androidx.fragment:fragment:1.4.0-beta01, androidx.fragment:fragment-ktx:1.4.0-beta01 và androidx.fragment:fragment-testing:1.4.0-beta01. Phiên bản 1.4.0-beta01 bao gồm các thay đổi sau.
Sửa lỗi
- Các mảnh mẹ hiện sẽ phân phối
onHiddenChanged()xuống toàn bộ hệ thống phân cấp trước khi chạy lệnh gọi lại. (Iedc20, b/77504618) - Giờ đây, bàn phím sẽ tự động đóng khi chuyển từ một mảnh có bàn phím mở sang một mảnh có chế độ xem tuần hoàn. (I8b842, b/196852211)
- Giờ đây,
DialogFragmentsử dụngsetReorderingAllowed(true)cho tất cả các giao dịch mà nó tạo ra khi bạn gọishow(),showNow(), hoặcdismiss(). (Ie2c14) - Cảnh báo tìm lỗi mã nguồn cực dài của
DetachAndAttachFragmentInSameFragmentTransactionđã được rút ngắn xuống cònDetachAndAttachSameFragment. (e9eca3)
Phiên bản 1.4.0-alpha10
Ngày 29 tháng 9 năm 2021
Phát hành androidx.fragment:fragment:1.4.0-alpha10, androidx.fragment:fragment-ktx:1.4.0-alpha10 và androidx.fragment:fragment-testing:1.4.0-alpha10. Phiên bản 1.4.0-alpha10 bao gồm các thay đổi sau.
Tìm lỗi mã nguồn
- Thêm cảnh báo tìm lỗi mã nguồn
DetachAndAttachFragmentInSameFragmentTransactionđể phát hiện việc gọi cảdetach()vàattach()trên cùng mộtFragmenttrong cùngFragmentTransaction– vì các thao tác bổ sung này sẽ loại trừ nhau khi bạn thực hiện cùng một giao dịch nên chúng phải được tách thành các giao dịch riêng biệt để thực hiện được điều gì đó. (aosp/1832956, b/200867930) - Thêm lỗi tìm lỗi mã nguồn
FragmentAddMenuProvidercho việc sử dụng Vòng đời Fragment vào Vòng đời của chế độ xem Fragment khi sử dụng APIaddMenuProvidercủaMenuHost. (aosp/1830457, b/200326272)
Các bản cập nhật tài liệu
- Thông báo về việc ngừng sử dụng những API này hiện được xử lý bởi Activity Result API, cụ thể là
startActivityForResult,startIntentSenderForResult,onActivityResult,requestPermissionsvàonRequestPermissionsResult, đã được mở rộng với nhiều chi tiết hơn. (cce80f) - Thông báo không dùng nữa cho
onActivityCreated()và cảFragmentvàDialogFragmentđã được mở rộng với nhiều thông tin chi tiết hơn. (224db4)
Phiên bản 1.4.0-alpha09
Ngày 15 tháng 9 năm 2021
Phát hành androidx.fragment:fragment:1.4.0-alpha09, androidx.fragment:fragment-ktx:1.4.0-alpha09 và androidx.fragment:fragment-testing:1.4.0-alpha09. Phiên bản 1.4.0-alpha09 bao gồm các thay đổi sau.
Tính năng mới
- Giờ đây, bạn có thể gọi
clearBackStack(name)để xoá mọi trạng thái được lưu trước đó bằngsaveBackStack(name). (I70cd7)
Các thay đổi về API
- Lớp
FragmentContainerViewđã được viết lại trong Kotlin để đảm bảo rằng hàmgetFragmentsẽ tôn trọng tính chất rỗng. (If694a, b/189629145) - Giờ đây, FragmentStrictMode được viết bằng Kotlin (I11767, b/199183506)
Sửa lỗi
- Khắc phục vấn đề trong đó trạng thái của một Mảnh (được thêm vào bằng
setReorderingAllowed(true), sau đó bị xoá ngay trước khi thực hiện các giao dịch đang chờ xử lý) không được dọn dẹp đúng cách. (I8ccb8)
Phiên bản 1.4.0-alpha08
Ngày 1 tháng 9 năm 2021
Phát hành androidx.fragment:fragment:1.4.0-alpha08, androidx.fragment:fragment-ktx:1.4.0-alpha08 và androidx.fragment:fragment-testing:1.4.0-alpha08. Phiên bản 1.4.0-alpha08 bao gồm các thay đổi sau.
Sửa lỗi
- Cải thiện tính năng kiểm tra tìm lỗi mã nguồn
UseRequireInsteadOfGetđể xử lý tốt hơn dấu ngoặc bị thừa. (I2d865) - Cải thiện tính năng kiểm tra tìm lỗi mã nguồn
UseGetLayoutInflaterđể xử lý các trường hợp cạnh khác. (Ie5423)
Phiên bản 1.4.0-alpha07
Ngày 18 tháng 8 năm 2021
Phát hành androidx.fragment:fragment:1.4.0-alpha07, androidx.fragment:fragment-ktx:1.4.0-alpha07 và androidx.fragment:fragment-testing:1.4.0-alpha07 mà không có thay đổi đáng kể nào. Phiên bản 1.4.0-alpha07 bao gồm các thay đổi sau.
Phiên bản 1.4.0-alpha06
Ngày 4 tháng 8 năm 2021
Phát hành androidx.fragment:fragment:1.4.0-alpha06, androidx.fragment:fragment-ktx:1.4.0-alpha06 và androidx.fragment:fragment-testing:1.4.0-alpha06. Phiên bản 1.4.0-alpha06 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục vấn đề với nhiều ngăn xếp lui sau khi hoán đổi nhanh giữa các ngăn xếp lui sẽ xuất hiện dưới dạng
IllegalStateExceptiontrong khi khôi phụcFragmentTransactionhoặc dưới dạng bản sao thứ hai của một mảnh xuất hiện. (I9039f) - Khắc phục vấn đề khi
FragmentManagergiữ lại bản sao của trạng thái đã lưu trước đó quasaveBackStack()ngay cả sau khi đã khôi phục trạng thái đó. (Ied212) - Phương thức
dismissAllowingStateLoss()củaDialogFragmentkhông còn gặp sự cố khi bạn gọi sau khi trạng thái được lưu khi thêm DialogFragment thông qua phương thứcshow(FragmentTransaction, String). (I84422)
Phiên bản 1.4.0-alpha05
Ngày 21 tháng 7 năm 2021
Phát hành androidx.fragment:fragment:1.4.0-alpha05, androidx.fragment:fragment-ktx:1.4.0-alpha05 và androidx.fragment:fragment-testing:1.4.0-alpha05. Phiên bản 1.4.0-alpha05 bao gồm các thay đổi sau.
Sửa lỗi
- Từ Fragment
1.3.6: Giờ đây, chế độ xem của Fragment được đặt thànhGONEkhi sử dụnghide()khi chế độ xem gốc đã được đặttransitionGroup=”true”. (aosp/1766655, b/193603427) - Từ Fragment
1.3.6: Giờ đây,FragmentActivitysẽ luôn mở khoá trạng thái đã lưu là thao tác đầu tiên trong phương thức gọi lại trong vòng đời mà nó ghi đè. (I6db7a)
Cập nhật các phần phụ thuộc
- Từ Fragment
1.3.6: Giờ đây, Fragment phụ thuộc vào Hoạt động1.2.4(I3a66c)
Phiên bản 1.4.0-alpha04
Ngày 30 tháng 6 năm 2021
Phát hành androidx.fragment:fragment:1.4.0-alpha04, androidx.fragment:fragment-ktx:1.4.0-alpha04 và androidx.fragment:fragment-testing:1.4.0-alpha04. Phiên bản 1.4.0-alpha04 bao gồm các thay đổi sau.
Các thay đổi về API
- Giờ đây,
FragmentManagersử dụngSavedStateRegistrytrong phần nâng cao để lưu trạng thái của nó. Phương thứcsaveAllState()vàrestoreSavedState()cũng không còn được dùng nữa trongFragmentController. Nếu đang sử dụngFragmentControllerđể lưu trữ các mảnh bên ngoàiFragmentActivity, thì bạn nên đểFragmentHostCallbackstriển khaiSavedStateRegistryOwner. (Iba68e, b/188734238)
Sửa lỗi
- Khắc phục vấn đề không thực hiện được lệnh gọi đến
saveBackStack()trong quá trình hỗ trợ nhiều ngăn xếp lui khi chạyFragmentTransactionsử dụngreplace()vào cùng thời điểm đó. (I73137) - Sửa lỗi
NullPointerExceptionxảy ra sau khi khôi phục theo cách thủ công một ngăn xếp lui đã lưu chứa nhiều giao dịch khi sử dụng APIrestoreBackStack()để hỗ trợ nhiều ngăn xếp lui. Việc này cũng giúp khắc phục vấn đề khisetReorderingAllowed(true)không được kiểm tra cho tất cả các giao dịch. (I8c593) - Khắc phục vấn đề khi
FragmentManagertiếp tục khôi phục trạng thái đã lưu trước đó không đúng cách ngay cả sau khi những mảnh đó đã bị xoá khỏiFragmentManager, do đó, trạng thái đã lưu sẽ liên tục tăng theo thời gian. (I1fb8e)
Phiên bản 1.4.0-alpha03
Ngày 16 tháng 6 năm 2021
Phát hành androidx.fragment:fragment:1.4.0-alpha03, androidx.fragment:fragment-ktx:1.4.0-alpha03 và androidx.fragment:fragment-testing:1.4.0-alpha03. Phiên bản 1.4.0-alpha03 bao gồm các thay đổi sau.
Tính năng mới
- Đối với tất cả các lớp Fragment StrictMode
Violation, thông báo lỗi đã được cập nhật chi tiết hơn để giải thích thông tin chi tiết về lỗi vi phạm. (b/187871638)FragmentTagUsageViolationhiện có thông báo lỗi chi tiết hơn về vùng chứa mẹ chứa mảnh đáng ra sẽ được thêm vào. (Ic33a7)- Giờ đây,
WrongFragmentContainerViolationcó thông báo lỗi chi tiết hơn bao gồm vùng chứa mà mảnh được thêm vào. (Ib55f8) - Giờ đây, các lớp trường hợp sử dụng cho
TargetFragmentUsageViolationsẽ có thông báo lỗi chi tiết hơn để cho biết mảnh gây ra lỗi vi phạm và mọi thông tin có trong đó. (Icc6ac) - Các lớp mở rộng
RetainInstanceUsageViolationhiện có thông báo lỗi chi tiết hơn bao gồm mảnh gây ra lỗi vi phạm. (I6bd55) - Giờ đây,
FragmentReuseViolationcó thông báo lỗi chi tiết hơn bao gồm mã nhận dạng trước đó của mảnh. (I28ce2) - Giờ đây,
SetUserVisibleHintViolationhiện có thêm thông báo lỗi chi tiết bao gồm gợi ý có thể nhìn thấy của người dùng đã được đặt là gì. (Ib2d5f)
Các thay đổi về hành vi
- Huỷ bỏ hạn chế gọi
fitsSystemWindowstrênFragmentContainerView– điều này không làm ứng dụng của bạn gặp sự cố nữa. (6b8ddd, b/190622202)
Sửa lỗi
- Từ Mảnh
1.3.5: Sửa lỗi hồi quy trong phần chuyển đổi thành phần chung trong Mảnh1.3.4bởi aosp/1679887. Giờ đây, Mảnh xử lý đúng cách các nhóm chuyển đổi (được đặt trực tiếp quatransitionGroup="true"hoặc gián tiếp quatransitionNamehoặcbackground) và các thành phần chung sẽ không còn gửiIndexOutOfBoundsExceptionnữa. (I16484, b/188679569, b/188969304) FragmentManagersẽ không còn gặp sự cố khi bạn cố gắng ẩn một mảnh đã xoá. (I573dd, b/183634730)- Quy trình kiểm tra tìm lỗi mã nguồn
OnCreateDialogIncorrectCallbacksẽ không còn xảy ra sự cố khi đánh giá một biến cấp cao nhất. (0a9efa, b/189967522)
Phiên bản 1.4.0-alpha02
Ngày 2 tháng 6 năm 2021
Phát hành androidx.fragment:fragment:1.4.0-alpha02, androidx.fragment:fragment-ktx:1.4.0-alpha02 và androidx.fragment:fragment-testing:1.4.0-alpha02. Phiên bản 1.4.0-alpha02 bao gồm các thay đổi sau.
Tính năng mới
- Giờ đây,
FragmentStrictModesẽ luôn ghi lại các lỗi vi phạm khi bạn bật tính năng ghi nhật ký thông quaFragmentManager, bất kể có áp dụng chính sách chế độ nghiêm ngặt hiện tại hay không. (I02df6, b/187872638) Giờ đây,
FragmentStrictModehỗ trợ việc miễn trừ lớpFragmentcụ thể khỏi chế độ nghiêm ngặtViolation, cho phép lớp đó có thể bỏ qua mọi lỗi. (Ib4e5d, b/184786736)Lớp
FragmentStrictModeViolationđã được mở rộng để thêm thông tin về cấu trúc dựa trên từng lỗi vi phạm. Điều này cho phép bạn xác minh chính xác nguyên nhân gây ra lỗi vi phạm cùng với mảnh vi phạm (If5118, b/187871150), mỗiViolationchứa nội dung sau:- Giờ đây,
WrongFragmentContainerViolationchứaViewGroupmàFragmentđang cố thêm vào. (I83c75, b/187871150) TargetFragmentUsageViolationđã mở rộng sangSetTargetFragmentUsageViolation,GetTargetFragmentUsageViolationvàGetTargetFragmentRequestCodeUsageViolation, vớiSetTargetFragmentUsageViolationchứa đoạn mảnh mục tiêu và mã yêu cầu. (I741b4, b/187871150)- Giờ đây,
SetUserVisibleHintViolationchứa giá trị boolean được chuyển vàosetUserVisibleHint(). (I00585, b/187871150) - Giờ đây,
FragmentTagUsageViolationchứa ViewGroup mà thẻ<fragment>đang cố gắng tăng cường một mảnh lên.(I5dbbc, b/187871150) - Giờ đây,
FragmentReuseViolationchứa mã nhận dạng duy nhất của thực thể trước đó củaFragmentđã gây ra lỗi vi phạm. (I0544d, b/187871150) - Giờ đây,
RetainInstanceUsageViolationlà lớp trừu tượng và có 2 lớp con làSetRetainInstanceUsageViolationvàGetRetainInstanceUsageViolation, đại diện cho hai trường hợp của loại lỗi vi phạm. (Ic81e5, b/187871150)
- Giờ đây,
Các thay đổi về hành vi
- Giờ đây,
FragmentContainerViewsẽ gửi một ngoại lệ khi tìm cách thay đổi thuộc tínhfitsSystemWindowtheo phương thức lập trình hoặc thông qua XML. Các giá trị lồng ghép phải được xử lý theo từng chế độ xem của mảnh. (Ie6651, b/187304502)
Phiên bản 1.4.0-alpha01
Ngày 18 tháng 5 năm 2021
Phát hành androidx.fragment:fragment:1.4.0-alpha01, androidx.fragment:fragment-ktx:1.4.0-alpha01 và androidx.fragment:fragment-testing:1.4.0-alpha01. Phiên bản 1.4.0-alpha01 bao gồm các thay đổi sau.
Tính năng mới
FragmentContainerViewhiện cung cấp phương thứcgetFragment()trả về mảnh mới nhất được thêm vào vùng chứa. Điều này sử dụng cùng logic nhưfindFragmentById()với mã nhận dạng củaFragmentContainerView, nhưng cho phép tạo chuỗi cuộc gọi. (Ife17a, b/162527857)val navController = binding.container.getFragment<NavHostFragment>().navControllerThêm
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}để chỉ rõ liệu bạn có muốn bật ảnh động chuyển đổi Hoạt động chuẩn được lấy từ giao diện trong phần chuyển đổi Mảnh hay không. (I46652)
Nhiều ngăn xếp lui
FragmentManager duy trì ngăn xếp lui được tạo thành từ các giao dịch mảnh sử dụng addToBackStack(). Điều này cho phép bạn hiển thị các giao dịch đó và quay lại trạng thái trước, sử dụng cơ chế Lưu trạng thái với các mảnh để cho phép các mảnh khôi phục lại trạng thái của chúng một cách thích hợp.
Bản phát hành này mở rộng các cơ chế này bằng cách cung cấp 2 API FragmentManager mới: saveBackStack(String name) và restoreBackStack(String name). Các API này sử dụng cùng name với addToBackStack() để lưu trạng thái của FragmentTransaction và trạng thái của mọi mảnh đã được thêm vào trong các giao dịch đó, đồng thời cho phép bạn khôi phục các giao dịch đó và các mảnh của chúng ở trạng thái được giữ nguyên. Điều này cho phép bạn "hoán đổi" hiệu quả giữa nhiều ngăn xếp lui bằng cách lưu ngăn xếp lui hiện tại và khôi phục một ngăn xếp lui đã lưu.
saveBackStack() hoạt động tương tự như popBackStack() ở chỗ đây là phương thức không đồng bộ dẫn đến việc tất cả các giao dịch mảnh quay lại tên cụ thể đó sẽ bị đảo ngược ("bật lên") và mọi mảnh đã thêm vào sẽ bị huỷ bỏ cũng như bị xoá, nhưng lại khác biệt theo một số cách quan trọng:
saveBackStack()luôn bao hàm.- Không giống như
popBackStack()sẽ hiển thị tất cả giao dịch trên ngăn xếp lui nếu không tìm thấy tên đã chỉ định trên ngăn xếp lui hoặc nếu tên rỗng,saveBackStack()sẽ không thực hiện hành động nào nếu trước đây bạn chưa xác nhận một giao dịch mảnh sử dụngaddToBackStack()có tên chính xác, không phải là tên rỗng. - Trạng thái của tất cả các mảnh đã thêm vào từ những giao dịch đó được lưu lại. Điều này có nghĩa là trạng thái Khung hiển thị của mỗi mảnh được lưu trữ,
onSaveInstanceState()của mỗi mảnh được gọi và trạng thái đó được khôi phục, đồng thời bất kỳ thực thểViewModelnào có liên quan đến các mảnh đó đều được giữ lại (vàonCleared()không được gọi trên các mảnh đó).
Các giao dịch mảnh có thể được dùng với saveBackStack() phải đáp ứng một số tiêu chí nhất định:
- Mọi giao dịch mảnh phải sử dụng
setReorderingAllowed(true)để đảm bảo giao dịch có thể được khôi phục dưới dạng một hoạt động nguyên tử. - Tập hợp giao dịch đã lưu phải là một tập hợp độc lập (nghĩa là các giao dịch này không được tham chiếu rõ ràng đến bất kỳ mảnh nào bên ngoài tập hợp giao dịch đó) để đảm bảo rằng sau này, những giao dịch đó có thể được khôi phục bất cứ lúc nào, bất kể mọi thay đổi đã thực hiện đối với ngăn xếp lui trong thời gian gián đoạn.
- Không có mảnh nào được lưu có thể là mảnh được giữ lại hoặc có mảnh được giữ lại trong tập hợp chuyển đổi của các mảnh con để đảm bảo rằng
FragmentManagerkhông trả về bất kỳ tham chiếu nào đến các mảnh đã lưu sau khi lưu ngăn xếp lui.
Tương tự như saveBackStack(), restoreBackStack() không thực hiện bất kỳ thao tác nào nếu trước đó bạn chưa gọi saveBackStack() với cùng tên. (b/80029773)
Fragment StrictMode
API FragmentStrictMode cung cấp quy trình kiểm tra thời gian chạy cho phép bạn xác minh rằng ứng dụng hoặc thư viện mà bạn phụ thuộc hiện không gọi các API mảnh không dùng nữa. Khi phát hiện lỗi vi phạm, bạn có thể chọn in thông điệp nhật ký, kích hoạt trình nghe tuỳ chỉnh của riêng mình hoặc đóng ứng dụng. Bạn có thể thiết lập FragmentStrictMode.Policy kiểm soát những yếu tố kiểm tra được bật và những yếu tố "bị phạt" được kích hoạt trên FragmentManager thông qua phương thức setStrictModePolicy() mới. Chính sách đó áp dụng cho FragmentManager và áp dụng tạm thời cho tất cả những trình quản lý mảnh con chưa tự đặt chính sách riêng biệt của họ. (#123, #131, #150, b/143774122)
detectFragmentReuse()phát hiện xem bản saoFragmentđã xoá trước đó có được thêm lại vàoFragmentManagerhay không. Bạn không được tương tác hoặc giữ lại một tệp tham chiếu đến thực thểFragmentsau khi thực thể đó bị huỷ và xoá khỏiFragmentManager. (#142, b/153738653)detectFragmentTagUsage()phát hiện khi bạn sử dụng thẻ<fragment>trong XML bố cục. Bạn phải luôn sử dụngFragmentContainerViewkhi tăng cường các mảnh như một phần của bố cục. (#141, b/153738235)detectWrongFragmentContainer()phát hiện khi bạn thêm một mảnh vào vùng chứa không phải làFragmentContainerView. Bạn phải luôn sử dụngFragmentContainerViewlàm vùng chứa cho các mảnh trong bố cục của mình. (#146, b/181137036)detectRetainInstanceUsage()phát hiện thời điểm bạn sử dụng APIsetRetainInstance()hoặcgetRetainInstance()không dùng nữa. (#140, b/153737954)detectSetUserVisibleHint()phát hiện thời điểm bạn sử dụng APIsetUserVisibleHint()không dùng nữa. (#136, b/153738974)detectTargetFragmentUsage()phát hiện thời điểm bạn sử dụng APIsetTargetFragment(),getTargetFragment()hoặcgetTargetRequestCode()không dùng nữa. (#139, b/153737745)
Các thay đổi về API
- API thử nghiệm của
FragmentManager.enableNewStateManager(boolean)đã bị xoá và giờ đây, trình quản lý trạng thái mới là tuỳ chọn duy nhất hiện có. (I90036, b/162776418) - Giờ đây,
FragmentScenariotriển khaiCloseable, cho phép bạn sử dụng nó với phương thứcusecủa Kotlin hoặc try-with-resources. (#121, b/143774122)
Kiểm tra tìm lỗi mã nguồn mới
- Giờ đây, tính năng kiểm tra tìm lỗi mã nguồn mới
UseGetLayoutInflatersẽ cảnh báo khi sử dụngLayoutInflater.from(Context)trongDialogFragment– bạn phải luôn sử dụng phương thứcgetLayoutInflater()của mảnh hộp thoại để sử dụng phương thức phù hợp choLayoutInflater. (#156, b/170781346) - Giờ đây, tính năng kiểm tra tìm lỗi mã nguồn
DialogFragmentCallbacksDetectorcảnh báo khi gọisetOnCancelListenerhoặcsetOnDismissListenertrong phương thứconCreateDialog()củaDialogFragment– những trình nghe này thuộc sở hữu củaDialogFragmentvà bạn nên ghi đèonCancel()vàonDismiss()để nhận các lệnh gọi lại này. (#171, b/181780047, b/187524311)
Sửa lỗi
- Từ Fragment 1.3.4: Khắc phục lỗi hồi quy trong Fragment
1.3.3khi sử dụng APIViewTreeViewModelStoreOwner.get()vớiViewModelProviderhoặc phương thức Jetpack Compose củaviewModel()trong Fragment. Giờ đây, các trường hợp sử dụng này dùng chính xácViewModelProvider.Factorydo Fragment của bạn cung cấp nếu ghi đègetDefaultViewModelProviderFactory()(như@AndroidEntryPointFragment được chú thích sẽ thực hiện khi sử dụng Hilt). Nếu bạn không ghi đè phương thức đó, thì mộtSavedStateViewModelFactoryđể lưu và khôi phục trạng thái phương thức đó cùng với khung hiển thị của Mảnh sẽ được tạo dưới dạng nhà máy mặc định. (I5cbfa, b/186097368) - Từ Fragment 1.3.4: Khi sử dụng
FragmentContainerViewtrên API 29, các phần lồng ghép sẽ không còn được gửi đi vô thời hạn, nhờ vậy khắc phục các vấn đề với thực thểBottomNavigationBarvàFloatingActionButton. (I1bb78, b/186012452) - Từ Fragment 1.3.4: Giờ đây, bạn có thể truy xuất Parcelable của mình từ gói kết quả mảnh sau khi bị buộc tắt. (I65932, b/187443158)
- Từ Parcelable 1.3.4: Khi chuyển đổi thành phần chung trên ViewGroup, nếu ViewGroup đã đặt
transitionGroupthành false thì giờ đây, phương thức này sẽ chuyển đổi đúng cách. (I99675)
Đóng góp bên ngoài
- Cảm ơn simonschiller đã giúp
FragmentScenariotriển khaiCloseable. (#121, b/143774122) - Cảm ơn simonschiller đã thêm toàn bộ API
FragmentStrictModecho bản phát hành này! (#123, #131, #150, b/143774122, #142, b/153738653, #141, b/153738235, #146, b/181137036, #140, b/153737954, #136, b/153738974, #139, b/153737745) - Cảm ơn tatieraster đã thêm tính năng kiểm tra tìm lỗi mã nguồn
UseGetLayoutInflater. (#156, b/170781346) - Cảm ơn tatieraster đã thêm tính năng kiểm tra tìm lỗi mã nguồn
DialogFragmentCallbacksDetector. (#171, b/181780047)
Phiên bản 1.3
Phiên bản 1.3.6
Ngày 21 tháng 7 năm 2021
Phát hành androidx.fragment:fragment:1.3.6, androidx.fragment:fragment-ktx:1.3.6 và androidx.fragment:fragment-testing:1.3.6. Phiên bản 1.3.6 bao gồm các thay đổi sau.
Sửa lỗi
- Từ Mảnh
1.4.0-alpha03:FragmentManagersẽ không còn gặp sự cố khi bạn cố gắng ẩn một mảnh đã xoá. (I573dd, b/183634730) - Giờ đây, chế độ xem của Fragment được đặt thành
GONEkhi sử dụnghide()khi chế độ xem gốc đã được đặttransitionGroup=”true”. (aosp/1766655, b/193603427) - Giờ đây,
FragmentActivitysẽ luôn mở khoá trạng thái đã lưu là thao tác đầu tiên trong phương thức gọi lại trong vòng đời mà nó ghi đè. (I6db7a)
Cập nhật các phần phụ thuộc
- Từ Fragment
1.3.6: Giờ đây, Fragment phụ thuộc vào Hoạt động1.2.4(I3a66c)
Phiên bản 1.3.5
Ngày 16 tháng 6 năm 2021
Phát hành androidx.fragment:fragment:1.3.5, androidx.fragment:fragment-ktx:1.3.5 và androidx.fragment:fragment-testing:1.3.5. Phiên bản 1.3.5 bao gồm các thay đổi sau.
Sửa lỗi
- Sửa lỗi hồi quy trong phần chuyển đổi thành phần chung trong Mảnh
1.3.4bởi aosp/1679887. Giờ đây, Mảnh xử lý đúng cách các nhóm chuyển đổi (được đặt trực tiếp quatransitionGroup="true"hoặc gián tiếp quatransitionNamehoặcbackground) và các thành phần chung sẽ không còn gửiIndexOutOfBoundsExceptionnữa. (I16484, b/188679569, b/188969304)
Phiên bản 1.3.4
Ngày 18 tháng 5 năm 2021
Phát hành androidx.fragment:fragment:1.3.4, androidx.fragment:fragment-ktx:1.3.4 và androidx.fragment:fragment-testing:1.3.4. Phiên bản 1.3.4 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục lỗi hồi quy trong Mảnh
1.3.3khi sử dụng APIViewTreeViewModelStoreOwner.get()vớiViewModelProviderhoặc phương thức Jetpack Compose củaviewModel()trong một Mảnh khi sử dụng Hilt. Giờ đây, các trường hợp sử dụng này dùng chính xácViewModelProvider.Factorydo Fragment của bạn cung cấp nếu ghi đègetDefaultViewModelProviderFactory()(như@AndroidEntryPointFragment được chú thích sẽ thực hiện). Nếu bạn không ghi đè phương thức đó, thì mộtSavedStateViewModelFactoryđể lưu và khôi phục trạng thái phương thức đó cùng với khung hiển thị của Mảnh sẽ được tạo dưới dạng nhà máy mặc định. (I5cbfa, b/186097368) - Khi sử dụng
FragmentContainerViewtrên API 29, các phần lồng ghép sẽ không còn được gửi đi vô thời hạn, nhờ đó khắc phục các vấn đề với thực thểBottomNavigationBarvàFloatingActionButton. (I1bb78, b/186012452) - Giờ đây, bạn có thể truy xuất Parcelable của mình từ gói kết quả mảnh sau khi bị buộc tắt. (I65932, b/187443158)
- Khi chuyển đổi thành phần chung trên ViewGroup, nếu ViewGroup đã đặt
transitionGroupthành false thì giờ đây, phương thức này sẽ chuyển đổi đúng cách. (I99675)
Phiên bản 1.3.3
Ngày 21 tháng 4 năm 2021
Phát hành androidx.fragment:fragment:1.3.3, androidx.fragment:fragment-ktx:1.3.3 và androidx.fragment:fragment-testing:1.3.3. Phiên bản 1.3.3 bao gồm các thay đổi sau.
Tính năng mới
- Việc dùng
SavedStateViewModelFactoryhiện hiệu quả khi được sử dụng vớiSavedStateRegistryOwnerđược trả về bằng cách sử dụngViewTreeSavedStateRegistryOwner.get()với Chế độ xem của Fragment. (I21acf, b/181577191)
Sửa lỗi
- Khắc phục lỗi hồi quy trong Mảnh
1.3.2khiến ảnh độngpopEnterkhông chạy khi hiển thịFragmentTransactionbao gồm một thao tácsetPrimaryNavFragmentnhư các lệnh đượcNavHostFragmentsử dụng. (I38c87, b/183877426) - Giờ đây,
FragmentContainerViewđảm bảo rằng mỗiFragmentsẽ được gửi một tập hợpWindowInsetsmới, nhờ đó đảm bảo rằng mỗi mảnh hiện có thể sử dụng các phần lồng ghép một cách độc lập. (I63f68, b/172153900) - Giờ đây,
DialogFragmentxử lý đúng cách các trường hợp mà mảnh con được thêm vào vùng chứa có cùng mã nhận dạng với vùng chứa trong lớpDialogtuỳ chỉnh của bạn, khắc phục các vấn đề về hệ phân cấp khung hiển thị khi sử dụng lại các mã nhận dạng được các hộp thoại nhưBottomSheetDialogsử dụng nội bộ. (Ie6279, b/180021387) - Giờ đây,
FragmentManager.dump()sẽ thụt lề đúng cách mảnh đầu tiên trong danh sách các mảnh đang hoạt động. (If5c33, b/183705451)
Sửa lỗi trình quản lý trạng thái mới
- Giờ đây, trình quản lý trạng thái mảnh mới sẽ xử lý đúng cách các lượt chuyển đổi thoát bằng các thao tác ẩn. (I9e4de, b/184830265)
Phiên bản 1.3.2
Ngày 24 tháng 3 năm 2021
Phát hành androidx.fragment:fragment:1.3.2, androidx.fragment:fragment-ktx:1.3.2 và androidx.fragment:fragment-testing:1.3.2. Phiên bản 1.3.2 bao gồm các thay đổi sau.
Sửa lỗi trình quản lý trạng thái mới
- Khi chạy cả hai thao tác
popBackStack()vàcommit(), thao tác cuối cùng sẽ đặt hướng cho tất cả các ảnh động thay vì chạy một số ảnh động bật lên và một số ảnh động nhập. (I7072e, b/181142246) - Các khung hiển thị trong hệ thống phân cấp thành phần chung sẽ không còn xoá tên lượt chuyển đổi khi chuyển đổi thành phần chung. (I4d4a6, b/179934757)
Thông tin cập nhật về phần phụ thuộc
- Giờ đây, Fragment phụ thuộc vàoHoạt động 1.2.2, khắc phục vấn đề với tính năng kiểm tra tìm lỗi mã nguồn
InvalidFragmentVersionForActivityResultcủa Hoạt động khi sử dụng Fragment 1.3.1 trở lên. - Giờ đây, Fragment tuỳ thuộc vào Vòng đời 2.3.1.
Phiên bản 1.3.1
Ngày 10 tháng 3 năm 2021
Phát hành androidx.fragment:fragment:1.3.1, androidx.fragment:fragment-ktx:1.3.1 và androidx.fragment:fragment-testing:1.3.1. Phiên bản 1.3.1 bao gồm các thay đổi sau.
Tính năng mới
- Giờ đây, các hộp thoại trong
DialogFragmentcó thể truy cập vào các chủ sở hữu của ViewTree thông qua DecorView, đảm bảo rằng bạn có thể sử dụngDialogFragmentvớiComposeView. (Ib9290, b/180691023)
Sửa lỗi
- Giờ đây, Mảnh được tăng cường vào hoạt động
RESUMEDtrước đó bằng cách sử dụng FragmentContainerView sẽ hiển thị đúng cách sau khi thay đổi cấu hình. (Ie14c8, b/180538371) - Không còn
}thừa ở cuối mảnhtoString()(I54705, b/177761088) - Các phương thức bị ghi đè trong FragmentActivity giờ đây kế thừa đúng phương thức cơ sở javaDoc (I736ce, b/139548782)
- Tài liệu dành cho
setFragmentResultvàsetFragmentResultListenerđã cập nhật tài liệu thông số để cho biết các giá trị rỗng (I990ba, b/178348386) không còn được chấp nhận nữa
Sửa lỗi trình quản lý trạng thái mới
- Khắc phục vấn đề rò rỉ bộ nhớ trong các mảnh do
mFocusedView(Ib4e9e, b/179925887 gây ra) - Giờ đây, các mảnh gọi đúng
onCreateOptionsMenukhi sử dụng giao dịch ẩn/hiển thị (I8bce8, b/180255554) - Giờ đây, các mảnh con có chuyển đổi bắt đầu trước khi mảnh được bố trí sẽ hiển thị đúng cách
RESUMED(Ic11e6, b/180825150) - Giờ đây, các mảnh tăng cường bằng cách sử dụng thẻ
<fragment>sẽ luôn chuyển thànhRESUMED(I452ac, (I9fa49)
Thông tin cập nhật về phần phụ thuộc
- Fragment 1.3.1 phụ thuộc vào Hoạt động
1.2.1. (I557b9)
Phiên bản 1.3.0
Ngày 10 tháng 2 năm 2021
Phát hành androidx.fragment:fragment:1.3.0, androidx.fragment:fragment-ktx:1.3.0 và androidx.fragment:fragment-testing:1.3.0. Phiên bản 1.3.0 bao gồm các thay đổi sau.
Thay đổi lớn kể từ phiên bản 1.2.0
- Trình quản lý trạng thái mới: Việc ghi lại nội bộ đáng kể của
FragmentManagerđã khắc phục nhiều vấn đề xung quanh việc gửi các sự kiện trong vòng đời, ảnh động và chuyển đổi cũng như cách xử lý các phần bị hoãn. Tích hợp API kết quả hoạt động: Hỗ trợ thêm cho API
ActivityResultRegistrycó trong Hoạt động1.2.0để xử lýstartActivityForResult()+onActivityResult()cũng nhưrequestPermissions()+onRequestPermissionsResult()chạy mà không có phương thức ghi đè trong Fragment ngoài việc cung cấp nội dung hấp dẫn để thử nghiệm những quy trình này. Hãy xem phần cập nhật Nhận kết quả từ một hoạt động.- Bản phát hành này khắc phục một số vấn đề xung quanh mã yêu cầu không hợp lệ và việc gửi đi các yêu cầu cấp quyền khiến Activity Result API không thể hoạt động trên các phiên bản
FragmentActivitytrước. Bạn phải nâng cấp lên Fragment 1.3.0 để sử dụng Activity Result API trongFragmentActivityhoặcAppCompatActivity.
- Bản phát hành này khắc phục một số vấn đề xung quanh mã yêu cầu không hợp lệ và việc gửi đi các yêu cầu cấp quyền khiến Activity Result API không thể hoạt động trên các phiên bản
Fragment Result API: Thêm tính năng hỗ trợ chuyển kết quả giữa 2 mảnh thông qua API mới trên
FragmentManager. Tính năng này hoạt động đối với các mảnh phân cấp (mẹ/con), DialogFragments và các mảnh trong Điều hướng và đảm bảo rằng kết quả chỉ được gửi đến Mảnh của bạn trong khi ít nhấtSTARTED. Ngừng sử dụng các API mảnh mục tiêu và thay bằng các API mới này. Xem phần Nhận kết quả bằng cách sử dụng Fragment Result API.FragmentOnAttachListener: Ngừng sử dụng lệnh gọi lạionAttachFragment()trênFragmentActivityvàFragment.FragmentOnAttachListenermới đã được thêm vào để cung cấp một tuỳ chọn thay thế linh hoạt hơn, cho phép uỷ quyềnonAttachFragment()tách riêng, các trình nghe có thể thử nghiệm và hỗ trợ thêm trình nghe cho FragmentManager, trừ FragmentManager con trực tiếp.Các điểm cải tiến
FragmentScenario: LớpFragmentScenariotừ cấu phần phần mềmfragment-testingđã được viết lại trong Kotlin và có một số điểm cải tiến:- Giờ đây,
FragmentScenariosử dụngsetMaxLifecycle()để triển khaimoveToState(), đảm bảo hành vi nhất quán trên tất cả các cấp độ API và phân tách trạng thái của Mảnh khỏi Hoạt động cơ bản. - Giờ đây,
FragmentScenariohỗ trợ đặtLifecycle.Stateban đầu để hỗ trợ xác nhận trạng thái của mảnh trước khi chuyển sang từngLifecycle.Statelần đầu tiên. - Hiện có một phương án thay thế cho API
FragmentScenariocủaonFragmentở dạng phương thức tiện ích mở rộng được sửa đổi KotlinwithFragmentmà cho phép bạn trả về một giá trị. Đáng chú ý là phương án này sẽ gửi lại các ngoại lệ xuất hiện trong khối đã cho.
- Giờ đây,
Hỗ trợ
ViewTree: Giờ đây,Fragmenthỗ trợ các APIViewTreeLifecycleOwner.get(View),ViewTreeViewModelStoreOwner.get(View)vàViewTreeSavedStateRegistryOwnermà bạn đã thêm vào Vòng đời2.3.0và SavedState1.1.0sao cho chế độ này sẽ trả về Mảnh dưới dạngViewModelStoreOwner, cũng nhưSavedStateRegistryOwnervàLifecycleOwnergắn với Vòng đời khung hiển thị của mảnh khi sử dụngViewtrong phạm viFragment.Các thay đổi về ảnh động
TRANSIT_: Các hiệu ứng mặc định của mảnh làTRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSEvàTRANSIT_FRAGMENT_FADEhiện sử dụngAnimatorthay vìAnimation. Các tài nguyên dùng để tạo ra các ảnh động này hiện đang ở chế độ riêng tư.setRetainInstance()không dùng nữa: Ngừng sử dụng phương thứcsetRetainInstance()trên Mảnh. Với sự ra mắt của ViewModels, các nhà phát triển có API cụ thể cho việc giữ lại trạng thái liên kết được với các biểu đồ Hoạt động, Mảnh và Điều hướng. Điều này cho phép các nhà phát triển sử dụng một Mảnh thông thường, không được giữ lại và giữ trạng thái cụ thể mà họ muốn giữ lại riêng biệt, tránh việc bị rò rỉ nguồn trong khi vẫn duy trì các thuộc tính hữu ích của từng trường hợp tạo và huỷ trạng thái được giữ lại (cụ thể là hàm khởi tạo củaViewModelvà lệnh gọi lạionCleared()mà nó nhận được).Không dùng bộ chuyển đổi ViewPager 1 nữa: Với bản phát hành ViewPager2
1.0.0, lớpFragmentPagerAdaptervàFragmentStatePagerAdapterđể tương tác vớiViewPagerđã ngừng hoạt động. Hãy xem Di chuyển từ ViewPager sang ViewPager2.
Phiên bản 1.3.0-rc02
Ngày 27 tháng 1 năm 2021
Phát hành androidx.fragment:fragment:1.3.0-rc02, androidx.fragment:fragment-ktx:1.3.0-rc02 và androidx.fragment:fragment-testing:1.3.0-rc02. Phiên bản 1.3.0-rc02 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục vấn đề khi
DialogFragmentmẹ sẽ xuất hiện trênDialogFragmentcon sau khi thay đổi cấu hình; giờ đây, các đoạn hộp thoại con luôn xuất hiện phía trên một đoạn hộp thoại mẹ. (I30806, b/177439520) - Khắc phục vấn đề khi việc thực hiện một thao tác
hidevớiAnimationsẽ khiến mảnh ẩn xuất hiện ở cuối ảnh động. (I57e22, b/175417675) - Giờ đây, các mảnh có chuyển đổi được thêm trước khi phân cấp chế độ xem được
đính kèm đúng cách hiện đã đạt đến
RESUMED. (I1fc1d, b/177154873)
Sửa lỗi trình quản lý trạng thái mới
- Giờ đây, chế độ xem của Mảnh
Lifecyclexử lý đúng cách các trường hợp chế độ xem của Mảnh bị huỷ trước khiLifecycleđạt đếnCREATED, tránh các trường hợp ngoại lệ nêu rõ “không có sự kiện nào bị HUỶ”. (eda2bd, b/176138645) - Giờ đây, Mảnh sử dụng
Animatorsẽ hiển thị theo đúng thứ tự khi sử dụngFragmentContainerView. (Id9aa3, b/176089197)
Phiên bản 1.3.0-rc01
Ngày 16 tháng 12 năm 2020
Phát hành androidx.fragment:fragment:1.3.0-rc01, androidx.fragment:fragment-ktx:1.3.0-rc01 và androidx.fragment:fragment-testing:1.3.0-rc01. Phiên bản 1.3.0-rc01 bao gồm các thay đổi sau.
Sửa lỗi
- Giờ đây,
onPrepareOptionsMenu()tuân theo logic tương tự nhưonCreateOptionsMenu()và không còn được gọi khi mảnh mẹ gọisetMenuVisibility(false). (Id7de8, b/173203654)
Sửa lỗi trình quản lý trạng thái mới
- Khắc phục vấn đề rò rỉ và cấu phần phần mềm hình ảnh khi thêm một mảnh có
AnimationvàoFragmentContainerView, sau đó làm gián đoạn việc thêm bằng thao tác bật lên. (I952d8) - Đã khắc phục vấn đề khung hiển thị của mảnh tiếp tục ở trong hệ phân cấp khung hiển thị nếu khung hiển thị đó được thay thế trong các phương thức
onCreate()hoặconViewCreated(). (I8a7d5) - Giờ đây, tiêu điểm được khôi phục đúng cách về chế độ xem gốc của Fragment khi tiếp tục xem lại. (Ifc84b)
- Giờ đây, việc kết hợp các thao tác bật lên và thay thế trong cùng một giao dịch mảnh sẽ hiển thị các ảnh động thích hợp (Ifd4e4, b/170328691)
Phiên bản 1.3.0-beta02
Ngày 2 tháng 12 năm 2020
Phát hành androidx.fragment:fragment:1.3.0-beta02, androidx.fragment:fragment-ktx:1.3.0-beta02 và androidx.fragment:fragment-testing:1.3.0-beta02. Phiên bản 1.3.0-beta02 bao gồm các thay đổi sau.
Tính năng mới
FragmentScenariođã được chuyển đổi hoàn toàn sang Kotlin, đồng thời duy trì khả năng tương thích nguồn và tệp nhị phân thông qua việc sử dụng giao diện chức năng của Kotlin 1.4 choFragmentAction. (I19d31)
Các thay đổi về hành vi
- Giờ đây, bạn có thể sử dụng FragmentContainerViews không làm tăng kích thước mảnh bằng thuộc tính
classhoặcandroid:namebên ngoàiFragmentActivity. (Id4397, b/172266337) - Giờ đây, việc cố gắng đặt vòng đời tối đa của một mảnh thành
DESTROYEDsẽ gửi mộtIllegalArgumentException(Ie7651, b/170765622) - Giờ đây, việc khởi động FragmentScenario có trạng thái
DESTROYEDsẽ gửiIllegalArgumentException(I73590, b/170765622)
Sửa lỗi trình quản lý trạng thái mới
- Khắc phục vấn đề khung hiển thị không đạt đến trạng thái cuối cùng nếu bạn làm gián đoạn quá trình chuyển đổi mảnh đang sử dụng
Animatorhoặc một trong các tuỳ chọnTRANSIT_FRAGMENT_. (I92426, b/169874632) - Khắc phục vấn đề khiến các mảnh có
Animationthoát ra không được huỷ đúng cách. (I83d65) - Giờ đây, các mảnh thoát ra có hiệu ứng đã đảo ngược sẽ huỷ đúng cách và khởi động lại với hiệu ứng nhập phù hợp. (I62226, b/167092035)
- Khắc phục vấn đề
Animatorthoát ra củahide()không chạy. (Id7ffe) - Giờ đây, các mảnh xuất hiện đúng cách khi bị hoãn, sau đó bắt đầu ngay lập tức. (Ie713b, b/170022857)
- Các mảnh xoá khung hiển thị có tiêu điểm trong ảnh động sẽ không còn cố gắng khôi phục tiêu điểm trên khung hiển thị đã tách rời khi chúng đạt
RESUMED(I38c65, b/172925703)
Đóng góp bên ngoài
- Giờ đây,
FragmentFactorysẽ lưu riêng từng lớp mảnh vào bộ nhớ đệm cho nhiều thực thểClassLoader. Cảm ơn Simon Schiller! (#87, b/113886460)
Phiên bản 1.3.0-beta01
Ngày 1 tháng 10 năm 2020
Phát hành androidx.fragment:fragment:1.3.0-beta01, androidx.fragment:fragment-ktx:1.3.0-beta01 và androidx.fragment:fragment-testing:1.3.0-beta01. Phiên bản 1.3.0-beta01 bao gồm các thay đổi sau.
Tính năng mới
- Giờ đây,
setMaxLifecycle()hỗ trợ đặt trạng tháiLifecyclethànhINITIALIZINGmiễn là mảnh đó chưa được chuyển sangCREATED. (b/159662173)
Các thay đổi về API
- Nâng cấp androidx để sử dụng Kotlin 1.4 (Id6471, b/165307851, b/165300826)
Các thay đổi về hành vi
- Các tệp tài nguyên mảnh đã được đặt chính xác ở chế độ riêng tư. (aosp/1425237)
Sửa lỗi
- Giờ đây, các mảnh tăng cường bằng cách sử dụng thẻ
<fragment>sẽ đợi cho đến khi khung hiển thị của các mục đó được thêm vào vùng chứa trước khi chuyển sang BẮT ĐẦU (I02f4c) - Các mảnh hiển thị và
setMaxLifecycle()đếnCREATEDhiện đã chạy đúng cách các hiệu ứng thoát của chúng. (b/165822335) - Việc xoá một mảnh rời chưa được thêm vào ngăn xếp lui không còn gây rò rỉ bộ nhớ nữa. Cảm ơn Nicklas Ansman Giertz! (b/166489383)
- Giờ đây, các mảnh đang hoạt động sẽ luôn có
FragmentManagerkhông rỗng, và các mảnh cóFragmentManagerkhông rỗng sẽ luôn được coi là đang hoạt động. (aosp/1422346) - Giờ đây, hiệu ứng mặc định của mảnh (
TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSEvàTRANSIT_FRAGMENT_FADE) sử dụngAnimatorthay vìAnimation. (b/166155034)
Sửa lỗi trình quản lý trạng thái mới
- Giờ đây, các mảnh sẽ khôi phục đúng cách trạng thái tiêu điểm của chế độ xem từ ngay trước khi bắt đầu ảnh động. (Icc256)
- Các mảnh chỉ có chuyển đổi phần tử chung hiện sẽ hoàn thành chuẩn xác các hiệu ứng đặc biệt của chúng, nghĩa là chúng sẽ chuyển sang trạng thái cuối cùng (Iaebc7, b/166658128)
- Giờ đây, chế độ xem của Fragment luôn bị xoá khỏi vùng chứa trước khi bị huỷ. (Id5876)
- Giờ đây, trình quản lý trạng thái mới sẽ xoá chế độ xem mảnh thoát ra một cách nhất quán trước khi thêm chế độ xem nhập vào. (I41a6e)
- Trình quản lý trạng thái mới sẽ áp dụng những thay đổi rõ ràng đối với chế độ hiển thị của khung hiển thị mảnh. Điều này có nghĩa là nếu bạn đặt khung hiển thị của mảnh nhập thành
INVISIBLEtrước khi ảnh động bắt đầu, thì ảnh sẽ thực sự tiếp tục không hiển thị. (b/164481490) - Giờ đây, các Fragment ưu tiên
AnimatorshơnAnimations, nên một mảnh có cả hai phần tử này sẽ chỉ chạyAnimatorvà bỏ quaAnimation. (b/167579557) - Trình quản lý trạng thái mới không còn làm cho các mảnh nhấp nháy khi sử dụng ảnh động nhập nữa. (b/163084315)
Vấn đề đã biết
Khi sử dụng trình quản lý trạng thái mới, nếu bạn nhấn quay lại trong hiệu ứng nhập vào đặc biệt thay vì quay lại mảnh trước đó, thì mảnh cũ sẽ không bao giờ được thêm lại, dẫn đến màn hình trống. (b/167259187, b/167092035, b/168442830)
Phiên bản 1.3.0-alpha08
Ngày 19 tháng 8 năm 2020
Phát hành androidx.fragment:fragment:1.3.0-alpha08, androidx.fragment:fragment-ktx:1.3.0-alpha08 và androidx.fragment:fragment-testing:1.3.0-alpha08. Phiên bản 1.3.0-alpha08 bao gồm các thay đổi sau.
Trình quản lý trạng thái mới
Bản phát hành này bao gồm việc tái cấu trúc chính việc quản lý trạng thái nội bộ của FragmentManager, ảnh hưởng đến việc gửi các phương thức, ảnh động và chuyển đổi vòng đời cũng như cách xử lý các giao dịch bị hoãn. Tuỳ chọn này được bật theo mặc định. Xem Fragment: Tạo lại bài đăng trên blog của Internals để biết thêm chi tiết. (b/139536619, b/147749580)
- Bạn có thể sử dụng API thử nghiệm trong
FragmentManager.enableNewStateManager(boolean)để kiểm soát việc FragmentManager có sử dụng trình quản lý trạng thái mới hay không. (I7b6ee)
Các vấn đề sau đây chỉ được khắc phục khi sử dụng trình quản lý trạng thái mới:
- Giờ đây, mảnh trước của thao tác
replaceđã dừng lại chính xác trước khi mảnh mới bắt đầu. (b/161654580) - Giờ đây, các mảnh chặn nhiều ảnh động cạnh tranh trên cùng một mảnh, tránh trường hợp
Animationsẽ ghi đè tất cả hiệu ứngTransition, hoặcAnimatorvàTransitiontrên một mảnh riêng lẻ sẽ đều chạy được. (b/149569323) - Giờ đây,
enterTransitionvàexitTranstiontrong tất cả các mảnh vào và thoát đều chạy được thay vì chỉ mảnh vào cuối cùng và mảnh thoát đầu tiên. (b/149344150) - Các mảnh bị hoãn không còn bị kẹt ở trạng thái
CREATEDmà thay vào đó, chuyển sangSTARTEDcùng với các mảnh khác. (b/129035555) - Khắc phục vấn đề về việc
FragmentManagerthực thi các thao tác không đúng thứ tự khi kết hợp một giao dịch đã đặt lại bị trì hoãn và một giao dịch không theo thứ tự. (b/147297731) - Việc bật lên nhiều mảnh cùng lúc sẽ không còn khiến các mảnh trung gian tạm thời hiển thị khi trì hoãn các mảnh nữa. (b/37140383)
- Giờ đây,
FragmentManagertrả về các mảnh chính xác khi gọifindFragmentById()hoặcfindFragmentByTag()từ trong lệnh gọi lạionAttachFragment(). (b/153082833) - Các mảnh không còn gọi
onCreateView()trên các mảnh bị huỷ khi mảnh thay thế chúng bị trì hoãn. (b/143915710) - Thông báo lỗi khi cố gắng kết hợp khung
Transitionvà các thực thể AndroidXTransitionhiện đề cập đến mảnh có hiệu ứng chuyển đổi không hợp lệ. (b/155574969)
Các thay đổi về hành vi
- Giờ đây, bạn có thể gọi
launch()trênActivityResultLaunchertrong phương thức vòng đờionCreate()của một mảnh. (b/161464278) - Giờ đây, khi
registerForActivityResult()được gọi sauonCreate(), sẽ có một ngoại lệ cho biết rằng hành vi này không được phép thay vì ngầm không phân phối kết quả sau khi thay đổi cấu hình. (b/162255449) - Giờ đây,
FragmentActivitysử dụng APIOnContextAvailableListenertrong Hoạt động1.2.0-alpha08để khôi phục trạng thái củaFragmentManager. Mọi trình nghe được thêm vào các lớp con củaFragmentActivitysẽ chạy sau trình nghe này. (I513da)
Sửa lỗi
- Giờ đây,
ActivityOptionsđược chuyển qua khi sử dụngstartIntentSenderForResult()sẽ được tuân thủ. (b/162247961)
Vấn đề đã biết
- Khi sử dụng trình quản lý trạng thái mới, việc trực tiếp thiết lập chế độ hiển thị cho khung hiển thị gốc của mảnh sau
onViewCreated()và trướconResume()dẫn đến chế độ hiển thị bạn đặt sẽ bịFragmentManagerghi đè, kiểm soát chế độ hiển thị của khung hiển thị gốc. Để khắc phục, bạn nên sử dụng các thao táchide()vàshow()để thay đổi chế độ hiển thị của mảnh. (b/164481490)
Phiên bản 1.3.0-alpha07
Ngày 22 tháng 7 năm 2020
Phát hành androidx.fragment:fragment:1.3.0-alpha07, androidx.fragment:fragment-ktx:1.3.0-alpha07 và androidx.fragment:fragment-testing:1.3.0-alpha07. Phiên bản 1.3.0-alpha07 bao gồm các thay đổi sau.
Tính năng mới
- Giờ đây,
FragmentScenariohỗ trợ đặt trạng thái Vòng đời ban đầu làCREATED,STARTEDhoặcRESUMEDthay vì luôn chuyển Mảnh sang trạng tháiRESUMED. (b/159662750) - Thêm một phương án thay thế cho API
FragmentScenariocủaonFragmentở dạng phương thức tiện ích được sửa đổi KotlinwithFragment, cho phép bạn trả về một giá trị. Đáng chú ý là phương án này sẽ gửi lại các ngoại lệ xuất hiện trong khối đã cho. (b/158697631)
Các thay đổi về hành vi
- Giờ đây,
FragmentScenariosử dụngsetMaxLifecycle()để triển khaimoveToState(), đảm bảo hành vi nhất quán trên tất cả các cấp độ API và phân tách trạng thái của Mảnh khỏi Hoạt động cơ bản. (b/156527405) - Giờ đây,
SavedStateRegistryOwnerđượcViewTreeSavedStateRegistryOwnertrả về gắn với Vòng đời của chế độ xem mảnh. Việc này đảm bảo rằng trạng thái được lưu lại và khôi phục cùng lúc với chế độ xem của mảnh. (b/158503763)
Sửa lỗi
- Giờ đây, các mảnh chờ chế độ xem của mảnh đính kèm trước khi gọi
ViewCompat.requestApplyInsets(), tránh các trường hợp đưa vào bị bỏ qua. (b/158095749) - Giờ đây, việc gọi
clearFragmentResultListenersẽ xoá trình quan sát vòng đời đúng cách. (b/159274993)
Phiên bản 1.3.0-alpha06
Ngày 10 tháng 6 năm 2020
Phát hành androidx.fragment:fragment:1.3.0-alpha06, androidx.fragment:fragment-ktx:1.3.0-alpha06 và androidx.fragment:fragment-testing:1.3.0-alpha06. Phiên bản 1.3.0-alpha06 bao gồm các thay đổi sau.
Tính năng mới
- Ngừng sử dụng lệnh gọi lại
onAttachFragment()trênFragmentActivityvàFragment.FragmentOnAttachListenermới đã được thêm vào để cung cấp một tuỳ chọn thay thế linh hoạt hơn, cho phép uỷ quyềnonAttachFragment()tách riêng, các trình nghe có thể thử nghiệm và hỗ trợ thêm trình nghe cho FragmentManager , trừ FragmentManager con trực tiếp. (I06d3d)
Sửa lỗi
- Giờ đây, các mảnh mẹ đã khôi phục trạng thái khung hiển thị trước các mảnh con, khắc phục vấn đề thứ tự hình ảnh sau khi thay đổi cấu hình khi
DialogFragmenthiển thị mộtDialogFragmentkhác dưới dạng một mảnh con. (b/157195715) - Khắc phục vấn đề về việc kiểm tra tìm lỗi mã nguồn
UseRequireInsteadOfGetkhông xử lý chính xác cách sử dụng chuỗi của thao tác?.và!!. (b/157677616)
Phiên bản 1.3.0-alpha05
Ngày 20 tháng 5 năm 2020
Phát hành androidx.fragment:fragment:1.3.0-alpha05, androidx.fragment:fragment-ktx:1.3.0-alpha05 và androidx.fragment:fragment-testing:1.3.0-alpha05. Phiên bản 1.3.0-alpha05 bao gồm các thay đổi sau.
Tính năng mới
- Thêm tuỳ chọn hỗ trợ
ViewTreeViewModelStoreOwnertừ Lifecycle2.3.0-alpha03vàViewTreeSavedStateRegistryOwnertừ SavedState1.1.0-alpha01khi sử dụngViewtrong mộtFragment. (aosp/1297993, aosp/1300264)
Các thay đổi về API
- Giờ đây, các API
setFragmentResult()vàsetFragmentResultListener()sẽ lấyBundlevàFragmentResultListenerkhông rỗng. Để xoá một kết quả hoặc trình nghe đã đặt trước đó, hãy sử dụng phương thứcclearFragmentResult()vàclearFragmentResultListener()mới. (b/155416778) - Giờ đây, các tiện ích Kotlin của
setFragmentResultListener()sử dụng lambda được đánh dấu làinline. (b/155323404)
Các thay đổi về hành vi
- Giờ đây,
startActivityForResult(),startIntentSenderForResult()vàrequestPermissionsđã ngừng hoạt động trước đó trênFragmentsử dụng nội bộActivityResultRegistry, do đó giúp hạn chế việc chỉ sử dụng các bit thấp hơn (dưới0xFFFF) cho mã yêu cầu khi sử dụng các API đó. (b/155518741)
Các bản cập nhật tài liệu
- Mở rộng tài liệu trên hàm khởi tạo
Fragment(@LayoutRes int)vàDialogFragment(@LayoutRes int)để làm rõ rằng các hàm này phải được gọi từ hàm khởi tạo không đối số của lớp phụ khi sử dụngFragmentFactorymặc định. (b/153042497)
Phiên bản 1.3.0-alpha04
Ngày 29 tháng 4 năm 2020
Phát hành androidx.fragment:fragment:1.3.0-alpha04, androidx.fragment:fragment-ktx:1.3.0-alpha04 và androidx.fragment:fragment-testing:1.3.0-alpha04. Phiên bản 1.3.0-alpha04 bao gồm các thay đổi sau.
Tính năng mới
- Thêm tính năng hỗ trợ chuyển kết quả giữa 2 Mảnh thông qua API mới trên
FragmentManager. Tính năng này hoạt động đối với các mảnh phân cấp (mẹ/con), DialogFragments và các mảnh trong Điều hướng và đảm bảo rằng kết quả chỉ được gửi đến Mảnh của bạn trong khi ít nhấtSTARTED. (b/149787344)
Các thay đổi về API
- API mảnh mục tiêu không còn được dùng nữa. Để chuyển dữ liệu giữa các Mảnh, bạn nên sử dụng Fragment Result API mới. (b/149787344)
- Ngừng sử dụng API
startActivityForResult()/onActivityResult()vàrequestPermissions()/onRequestPermissionsResult()trên Mảnh. Vui lòng sử dụng Activity Result API. (aosp/1290887) - Thay đổi có thể gây lỗi từ Hoạt động
1.2.0-alpha04: phương thứcprepareCall()đã được đổi tên thànhregisterForActivityResult(). (aosp/1278717)
Sửa lỗi
- Hiện đã ngừng sử dụng
getViewLifecycleOwner()của mảnh trước khi gọionSaveInstanceState(). Điều này phản ánh hành vi của vòng đời của mảnh. (b/154645875) - Giờ đây, thao tác gọi
setMenuVisibility(false)trên một mảnh sẽ thay đổi chính xác chế độ hiển thị của các trình đơn do các mảnh con của mảnh đó cung cấp. (b/153593580) - Sửa
illegalStateExceptionkhi thêm một mảnh vào hệ phân cấp chế độ xem củaDialogFragmentvớiFragmentContainerView. (b/154366601) - Phương thức
getDefaultViewModelProviderFactory()trên các mảnh không còn gặp sự cố khi lưu trữ các mảnh bên ngoài một hoạt động. (b/153762914)
Phiên bản 1.3.0-alpha03
Ngày 1 tháng 4 năm 2020
Phát hành androidx.fragment:fragment:1.3.0-alpha03, androidx.fragment:fragment-ktx:1.3.0-alpha03 và androidx.fragment:fragment-testing:1.3.0-alpha03. Phiên bản 1.3.0-alpha03 bao gồm các thay đổi sau.
Các thay đổi về API
- Giờ đây, các phương thức
prepareCalltrênFragmentlàfinal. (b/152439361)
Sửa lỗi
- Khắc phục lỗi hồi quy trong Fragment
1.3.0-alpha02khi sử dụngBottomSheetDialogFragment. (b/151652127, aosp/1263328, aosp/1265163) - Khắc phục vấn đề khi sử dụng
prepareCalltừ một mảnh sau khi thay đổi cấu hình. (b/152137004) - Khắc phục vấn đề về việc các thành phần chung và quá trình chuyển đổi thoát bị bỏ qua khi sử dụng
setTargetFragment(). (b/152023196) - Từ Mảnh
1.2.4: Cập nhật quy tắc Fragment ProGuard để cho phép làm rối mã nguồn của các mảnh được giữ lại. (b/151605338) - Từ Mảnh
1.2.4: Vô hiệu hoáFragmentLiveDataObservequy tắc tìm lỗi mã nguồn trên các lớpDialogFragmentvì vòng đời và vòng đời của chế độ xem luôn đồng bộ hoá, giúp sử dụngthishoặcviewLifecycleOwnerkhi gọiobserve. (b/151765086)
Thay đổi về phần phụ thuộc
- Các mảnh phụ thuộc vào Hoạt động
1.2.0-alpha03, có những điểm cải tiến đáng kể đối với Activity Result API có trong Hoạt động1.2.0-alpha02.
Phiên bản 1.3.0-alpha02
Ngày 18 tháng 3 năm 2020
Phát hành androidx.fragment:fragment:1.3.0-alpha02, androidx.fragment:fragment-ktx:1.3.0-alpha02 và androidx.fragment:fragment-testing:1.3.0-alpha02. Phiên bản 1.3.0-alpha02 bao gồm các thay đổi sau.
Tính năng mới
- Thêm tính năng hỗ trợ API
ActivityResultRegistrycó trong Hoạt động1.2.0-alpha02để xử lý các luồngstartActivityForResult()+onActivityResult()cũng nhưrequestPermissions()+onRequestPermissionsResult()mà không cần phương thức ghi đè trong Mảnh, bên cạnh việc cung cấp hook để thử nghiệm những quy trình này. Hãy xem phần cập nhật Nhận kết quả từ một hoạt động. (b/125158199)
Các thay đổi về API
- Giờ đây,
DialogFragmentcung cấp một hàm khởi tạo có@LayoutRescho biết bố cục màonCreateView()sẽ tăng theo mặc định. (b/150327080) - Giờ đây, phương thức
onActivityCreated()không được dùng nữa. Bạn phải thực hiện mã nhấn vào thành phần hiển thị của mảnh trongonViewCreated()(được gọi ngay trướconActivityCreated()) và mã khởi động khác phải trongonCreate(). Để nhận được một lệnh gọi lại cụ thể khionCreate()của hoạt động hoàn tất, thìLifeCycleObserverphải được đăng ký trênLifecyclecủa hoạt động trongonAttach()và bị xoá sau khi thao tác gọi lạionCreate()được nhận. (b/144309266)
Sửa lỗi
- Từ Fragment
1.2.3: Sửa lỗiDialogFragmentgây raStackOverflowErrorkhi gọigetLayoutInflater()từ trongonCreateDialog(). (b/117894767, aosp/1258664) - Từ Fragment
1.2.3: Giảm phạm vi của các quy tắc ProGuard đi kèm trong Fragment để đảm bảo có thể xoá các lớp Fragment không sử dụng. (b/149665169) - Từ Mảnh
1.2.3: Sửa lỗi dương tính giả trong việc kiểm traUseRequireInsteadOfGetTìm lỗi mã nguồn khi sử dụng tên biến cục bộ đã ẩn tên thuộc tính Kotlin. (b/149891163) - Từ Mảnh
1.2.3:FragmentContainerViewkhông còn gửiUnsupportedOperationExceptiondo sử dụng hàm khởi tạo không chính xác trong bản xem trước bố cục. (b/149707833)
Lỗi đã biết
BottomSheetDialogFragmentkhông còn định vị chính xác hộp thoại trên màn hình nữa. (b/151652127)
Phiên bản 1.3.0-alpha01
Ngày 4 tháng 3 năm 2020
Phát hành androidx.fragment:fragment:1.3.0-alpha01, androidx.fragment:fragment-ktx:1.3.0-alpha01 và androidx.fragment:fragment-testing:1.3.0-alpha01. Phiên bản 1.3.0-alpha01 bao gồm các thay đổi sau.
Tính năng mới
- Thêm tính năng hỗ trợ API
ViewTreeLifecycleOwner.get(View)được thêm vào trong Vòng đời2.3.0-alpha01để API này trả vềviewLifecycleOwnercủa Mảnh dưới dạngLifecycleOwnercho mọi Khung hiển thị doonCreateView()trả về. (aosp/1182955)
Các thay đổi về API
- Phương thức
setRetainInstance()trên Mảnh không còn được dùng nữa. Với sự ra mắt của ViewModels, các nhà phát triển có API cụ thể cho việc giữ lại trạng thái liên kết được với các biểu đồ Hoạt động, Mảnh và Điều hướng. Điều này cho phép các nhà phát triển sử dụng một Mảnh thông thường, không được giữ lại và giữ trạng thái cụ thể mà họ muốn giữ lại riêng biệt, tránh việc bị rò rỉ nguồn trong khi vẫn duy trì các thuộc tính hữu ích của từng trường hợp tạo và huỷ trạng thái được giữ lại (cụ thể là hàm khởi tạo củaViewModelvà lệnh gọi lạionCleared()mà nó nhận được). (b/143911815) - Với bản phát hành ViewPager2
1.0.0, các lớpFragmentPagerAdaptervàFragmentStatePagerAdapterdùng để tương tác vớiViewPagerđã ngừng hoạt động. Hãy xem Di chuyển từ ViewPager sang ViewPager2. (b/145132715)
Sửa lỗi
- Giờ đây, các quy tắc Fragment ProGuard chỉ giữ lại đúng các lớp hàm khởi tạo
Fragmentmặc định được sử dụng chứ không phải cho tất cả các thực thểFragment, qua đó khắc phục lỗi hồi quy trong Mảnh1.2.1. (b/149665169 - Quy tắc tìm lỗi mã nguồn
require___()được thêm vào trong Mảnh1.2.2không còn chứa giá trị dương tính giả trên các biến cục bộ có cùng tên với tên thuộc tính Kotlin bị ẩn (tức làview). (b/149891163) FragmentContainerViewkhông còn gửiUnsupportedOperationExceptionkhi sử dụng bản xem trước bố cục trong Android Studio nữa. (b/149707833)- Khắc phục vấn đề về việc các mảnh bị giữ lại được thêm vào sau khi lưu trạng thái sẽ không được tạo lại liên tục và bị huỷ bỏ sau mỗi lần thay đổi cấu hình. (b/145832397)
Phiên bản 1.2.5
Phiên bản 1.2.5
Ngày 10 tháng 6 năm 2020
Phát hành androidx.fragment:fragment:1.2.5, androidx.fragment:fragment-ktx:1.2.5 và androidx.fragment:fragment-testing:1.2.5. Phiên bản 1.2.5 bao gồm các thay đổi sau.
Sửa lỗi
- Hiện đã ngừng sử dụng
getViewLifecycleOwner()của mảnh trước khi gọionSaveInstanceState(). Điều này phản ánh hành vi của vòng đời của mảnh. Trước đây, mã này đã được phát hành trong Fragment1.3.0-alpha04. (b/154645875) - Giờ đây, thao tác gọi
setMenuVisibility(false)trên một mảnh sẽ thay đổi chính xác chế độ hiển thị của các trình đơn do các mảnh con của mảnh đó cung cấp. Trước đây, mã này đã được phát hành trong Fragment1.3.0-alpha04. (b/153593580)
Phiên bản 1.2.4
Phiên bản 1.2.4
Ngày 1 tháng 4 năm 2020
Phát hành androidx.fragment:fragment:1.2.4, androidx.fragment:fragment-ktx:1.2.4 và androidx.fragment:fragment-testing:1.2.4. Phiên bản 1.2.4 bao gồm các thay đổi sau.
Sửa lỗi
- Cập nhật quy tắc Fragment ProGuard để cho phép làm rối mã nguồn của các mảnh được giữ lại. (b/151605338)
- Vô hiệu hoá quy tắc tìm lỗi mã nguồn
FragmentLiveDataObservetrên các lớpDialogFragmentvì vòng đời và vòng đời của khung hiển thị luôn đồng bộ hoá, giúp sử dụngthishoặcviewLifecycleOwnerkhi gọiobserve. (b/151765086)
Phiên bản 1.2.3
Phiên bản 1.2.3
Ngày 18 tháng 3 năm 2020
Phát hành androidx.fragment:fragment:1.2.3, androidx.fragment:fragment-ktx:1.2.3 và androidx.fragment:fragment-testing:1.2.3. Phiên bản 1.2.3 bao gồm các thay đổi sau.
Sửa lỗi
- Sửa lỗi trong
DialogFragmentgây raStackOverflowErrorkhi gọigetLayoutInflater()từ trongonCreateDialog(). (b/117894767, aosp/1258665) - Giảm phạm vi của các quy tắc ProGuard đi kèm trong Mảnh để đảm bảo có thể xoá các lớp Mảnh không sử dụng. (b/149665169)
- Sửa lỗi dương tính giả trong việc kiểm tra Tìm lỗi mã nguồn
UseRequireInsteadOfGetkhi sử dụng tên biến cục bộ đã ẩn tên thuộc tính Kotlin. (b/149891163) FragmentContainerViewkhông còn gửiUnsupportedOperationExceptionvì sử dụng hàm khởi tạo không chính xác trong bản xem trước bố cục. (b/149707833)
Phiên bản 1.2.2
Phiên bản 1.2.2
Ngày 19 tháng 2 năm 2020
Phát hành androidx.fragment:fragment:1.2.2, androidx.fragment:fragment-ktx:1.2.2 và androidx.fragment:fragment-testing:1.2.2. Phiên bản 1.2.2 bao gồm các thay đổi sau.
Kiểm tra tìm lỗi mã nguồn mới
- Tìm lỗi mã nguồn đề xuất sử dụng
viewLifecycleOwnerlàmLifecycleOwnerđể gọi tớiOnBackPressedDispatchertrongonCreateView(),onViewCreated()vàonActivityCreated(). (b/142117657) - Thêm tính năng kiểm tra lỗi mã nguồn mới để xác nhận rằng bạn đang sử dụng đúng
debugImplementationkhi sử dụng cấu phần mềmfragment-testing. (b/141500106) - Giờ đây, Mảnh đề xuất các phương thức
require___()liên kết cho các thông báo lỗi mô tả thay vìcheckNotNull(get___()),requireNonNull(get___())hoặcget___()!!cho tất cả các Fragment API có cảgetvàrequiretương đương. (aosp/1202883)
Sửa lỗi
- Sửa các tệp Fragment ProGuard để tránh cảnh báo R8 (b/148963981)
- Cải thiện đề xuất của tính năng kiểm tra tìm lỗi mã nguồn hiện tại bằng cách sử dụng
viewLifecycleOwnerkhi dùngobserveđể xử lý cả phiên bản phương thức mở rộnglivedata-ktxcủaobserve. (b/148996309) - Sửa định dạng cho nhiều bước kiểm tra tìm lỗi mã nguồn (aosp/1157012)
Đóng góp bên ngoài
- Cảm ơn Zac Sweers đã thay mặt cho Slack đóng góp vào các lần kiểm tra tìm lỗi mã nguồn
require___()! (aosp/1202883)
Phiên bản 1.2.1
Phiên bản 1.2.1
Ngày 5 tháng 2 năm 2020
Phát hành androidx.fragment:fragment:1.2.1, androidx.fragment:fragment-ktx:1.2.1 và androidx.fragment:fragment-testing:1.2.1. Phiên bản 1.2.1 bao gồm các thay đổi sau.
Sửa lỗi
- Các mảnh được thêm vào thông qua phương thức
addvàreplacesử dụng một thực thểClass(hoặc phiên bản sửa đổi Kotlin) hiện có hàm khởi tạo mặc định được ProGuard giữ lại. (b/148181315) FragmentStatePagerAdaptervàFragmentPagerAdapterkhông còn phát hiện các ngoại lệ doFragmentManagergửi khi chạyfinishUpdate(). (aosp/1208711)- Khắc phục vấn đề
FragmentManager.findFragment()không hoạt động với các mảnh đã thêm qua thẻ<fragment>. (b/147784323) - Giờ đây, các mảnh tăng cường bằng cách sử dụng thẻ
<fragment>luôn nhận được lệnh gọi tớionInflate()trướconCreate()khi ở trong bố cục. (aosp/1215856) - Việc gọi
toString()trên phiên bảnFragmentManagerkhông còn gửiNullPointerExceptionkhi Hoạt động đã bị huỷ. (b/148189412)
Thay đổi về phần phụ thuộc
- Các mảnh
1.2.1hiện đang phụ thuộc vào Lifecycle ViewModel SavedState2.2.0
Phiên bản 1.2.0
Phiên bản 1.2.0
Ngày 22 tháng 1 năm 2020
Phát hành androidx.fragment:fragment:1.2.0, androidx.fragment:fragment-ktx:1.2.0 và androidx.fragment:fragment-testing:1.2.0. Phiên bản 1.2.0 bao gồm các thay đổi sau.
Thay đổi quan trọng kể từ phiên bản 1.1.0
- FragmentContainerView:
FragmentContainerViewlà vùng chứa được đề xuất cho các Mảnh được thêm vào linh động, thay thế việc sử dụngFrameLayouthoặc các bố cục khác. Mã này cũng hỗ trợclass,android:nametương tự vàandroid:tagkhông bắt buộc như thẻ<fragment>, nhưng sử dụngFragmentTransactionthông thường để thêm mảnh ban đầu này thay vì đường dẫn mã tuỳ chỉnh do<fragment>sử dụng. - định thời gian
onDestroyView(): Các Mảnh hiện chờ ảnh động thoát, chuyển đổi khung thoát và chuyển đổi AndroidX thoát (khi sử dụng1.3.0Chuyển đổi) để hoàn tất trước khi gọionDestroyView(). add()vàreplace()dựa trên lớp: Thêm các nội dung quá tảiadd()vàreplace()mới vàoFragmentTransaction, thực hiệnClass<? extends Fragment>vàBundlekhông bắt buộc của đối số. Các phương thức này sử dụngFragmentFactorycủa bạn để tạo một phiên bản của Mảnh để thêm. Các tiện ích Kotlin sử dụng các loại đã sửa đổi (tức làfragmentTransaction.replace<YourFragment>(R.id.container)) cũng đã được thêm vàofragment-ktx.- Tích hợp Vòng đời ViewModel SavedState:
SavedStateViewModelFactoryhiện là trạng thái ban đầu mặc định được sử dụng khi sử dụngby viewModels(),by activityViewModels(), hàm khởi tạoViewModelProviderhoặcViewModelProviders.of()với một Mảnh. - Tính năng kiểm tra tìm lỗi mã nguồn mới: Thêm tính năng kiểm tra tìm lỗi mã nguồn mới đảm bảo bạn đang sử dụng
getViewLifecycleOwner()khi quan sátLiveDatatừonCreateView(),onViewCreated()hoặconActivityCreated(). - Không dùng
getFragmentManager()nữa: Ngừng sử dụng phương thứcgetFragmentManager()vàrequireFragmentManager()trên Mảnh, thay vào đó là một phương thứcgetParentFragmentManager()duy nhất. Phương thức này sẽ trả vềFragmentManagerkhông rỗng mà Mảnh được thêm vào (bạn có thể sử dụngisAdded()để xác định xem có thể gọi an toàn hay không). FragmentManager.enableDebugLogging()không dùng nữa: Ngừng sử dụng phương thứcFragmentManager.enableDebugLoggingtĩnh này. Giờ đây, FragmentManager đã áp dụngLog.isLoggable()đối với thẻFragmentManager, cho phép bạn bật tính năng ghi nhật kýDEBUGhoặcVERBOSEmà không cần biên dịch lại ứng dụng của bạn.
Lỗi đã biết
- Các mảnh chỉ được tham chiếu qua thuộc tính
classhoặcandroid:nametrênFragmentContainerViewsẽ không được ProGuard tự động lưu giữ, do đó bạn phải tự thêm quy tắc lưu giữ cho từng lớp mảnh. (b/142601969) - Khi thêm
NavHostFragmentbằngclasshoặcandroid:nametrong XML vớiFragmentContainerView, bạn không thể dùngfindNavController()trongonCreate()của Hoạt động. (b/142847973)
Phiên bản 1.2.0-rc05
Ngày 8 tháng 1 năm 2020
Phát hành androidx.fragment:fragment:1.2.0-rc05, androidx.fragment:fragment-ktx:1.2.0-rc05 và androidx.fragment:fragment-testing:1.2.0-rc05. Phiên bản 1.2.0-rc05 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục lỗi hồi quy trong
1.2.0-rc04Mảnh khi sử dụng thẻ<fragment>khiếnonViewCreated()bị gọi sai trong quá trình huỷ hoạt động. (b/146290333) - Các mảnh được thêm bằng thẻ
<fragment>hiện đã xoá đúng cách các phần không thuộc cấu hình ngay cả khi chúng chỉ thỉnh thoảng xuất hiện trong bố cục (tức là chỉ trong bố cục ngang). Do đó, các Mảnh này hiện được chuyển chính xác sangCREATEDngay cả khi không có trong bố cục thay vì được tạo bản sao nhưng không chuyển qua bất kỳ phương thức vòng đời nào. (b/145769287)
Phiên bản 1.2.0-rc04
Ngày 18 tháng 12 năm 2019
Phát hành androidx.fragment:fragment:1.2.0-rc04, androidx.fragment:fragment-ktx:1.2.0-rc04 và androidx.fragment:fragment-testing:1.2.0-rc04. Phiên bản 1.2.0-rc04 bao gồm các thay đổi sau.
Sửa lỗi
- Điều chỉnh ảnh động cho
TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSEvàTRANSIT_FRAGMENT_FADEđể tránh các vấn đề về hình ảnh. (b/145468417)
Phiên bản 1.2.0-rc03
Ngày 4 tháng 12 năm 2019
Phát hành androidx.fragment:fragment:1.2.0-rc03, androidx.fragment:fragment-ktx:1.2.0-rc03 và androidx.fragment:fragment-testing:1.2.0-rc03. Phiên bản 1.2.0-rc03 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục thay đổi hành vi ngoài ý muốn khi các Mảnh bị xoá vẫn được trả về bởi
findFragmentById()/findFragmentByTag()trong khi các lượt ảnh động/lần chuyển đổi thoát của những Mảnh này chạy. (b/143982969, aosp/1167585) - Giờ đây, các Mảnh con cháu sẽ được dừng đúng cách trước khi Mảnh mẹ chứa hoạt động gọi
onSaveInstanceState(). (b/144380645) - Khắc phục vấn đề trong đó các Khung hiển thị bị đánh dấu không chính xác là
INVISIBLEsau khi bật lên một Mảnh bị ẩn. (b/70793925) - Các thao tác chuyển đổi phần tử chung của Mảnh nay xử lý các Khung hiển thị đã được xoay, điều chỉnh theo tỷ lệ, v.v. (b/142835261)
Các bản cập nhật tài liệu
- Làm rõ tài liệu về việc ngừng sử dụng liên quan đến
setUserVisibleHint(). (b/143897055) - Cải thiện tài liệu trên
setFragmentFactory()vàgetFragmentFactory()để cho biết rõ hơn rằng việc đặtFragmentFactorycũng sẽ ảnh hưởng đến FragmentManagers của thành phần con. (aosp/1170095)
Thay đổi về phần phụ thuộc
- Mảnh bây giờ phụ thuộc vào Vòng đời
2.2.0-rc03Lifecycle ViewModel SavedState1.0.0-rc03và Hoạt động1.1.0-rc03.
Phiên bản 1.2.0-rc02
Ngày 7 tháng 11 năm 2019
Phát hành androidx.fragment:fragment:1.2.0-rc02, androidx.fragment:fragment-ktx:1.2.0-rc02 và androidx.fragment:fragment-testing:1.2.0-rc02. Phiên bản 1.2.0-rc02 bao gồm các thay đổi sau.
Sửa lỗi
- Khi ở trong Kotlin, LintFix sử dụng
getViewLifecycleOwner()khi quan sátLiveDatatừonCreateView(),onViewCreated()hoặconActivityCreated()(có trong Mảnh1.2.0-rc01) nay sử dụng cú pháp quyền truy cập vào thuộc tính KotlinviewLifecycleOwnerthay vìgetViewLifecycleOwner(). (aosp/1143821)
Phiên bản 1.2.0-rc01
Ngày 23 tháng 10 năm 2019
Phát hành androidx.fragment:fragment:1.2.0-rc01, androidx.fragment:fragment-ktx:1.2.0-rc01 và androidx.fragment:fragment-testing:1.2.0-rc01. Phiên bản 1.2.0-rc01 bao gồm các thay đổi sau.
Tính năng mới
- Giờ đây,
FragmentContainerViewhỗ trợ thuộc tínhclassngoàiandroid:name, phản ánh chức năng của thẻ<fragment>. (b/142722242) - Thêm một chương trình kiểm tra tìm lỗi mã nguồn mới để đảm bảo bạn đang sử dụng
getViewLifecycleOwner()khi quan sátLiveDatatừonCreateView(),onViewCreated()hoặconActivityCreated(). (b/137122478)
Sửa lỗi
- Giờ đây, lệnh gọi lại
onDismissvàonCanceltrênDialogFragmentđảm bảo rằngDialogInterfaceđược chuyển đến các giá trị này là không rỗng vàgetDialog()sẽ trả về giá trị không rỗng khi thực thi. (b/141974033) FragmentContainerViewhiện thêm Mảnh màclasshoặcandroid:namexác định là một phần của hành vi tăng cường, đảm bảo rằngfindFragmentById()vàfindFragmentByTag()sẽ hoạt động ngay sau đó. (b/142520327)- Khắc phục lỗi
IllegalStateExceptiontrongFragmentContainerViewdo trạng thái đang được lưu. (b/142580713) - Sửa
UnsupportedOperationExceptiontrongFragmentContainerViewkhi lớpFragmentContainerViewbị làm rối mã nguồn. (b/142657034)
Vấn đề đã biết
- Các mảnh chỉ được tham chiếu qua thuộc tính
classhoặcandroid:nametrênFragmentContainerViewsẽ không được ProGuard tự động lưu giữ, do đó bạn phải tự thêm quy tắc lưu giữ cho từng lớp mảnh. Chúng tôi đã vô hiệu hoá đề xuất quy tắc tìm lỗi mã nguồn chuyển sangFragmentContainerViewcho đến khi điều này được khắc phục quaaapt2. (b/142601969)
Phiên bản 1.2.0-beta02
Ngày 11 tháng 10 năm 2019
Phát hành androidx.fragment:fragment:1.2.0-beta02, androidx.fragment:fragment-ktx:1.2.0-beta02 và androidx.fragment:fragment-testing:1.2.0-beta02. Phiên bản 1.2.0-beta02 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục vấn đề khiến
onInflate()của Mảnh không nhận được các thuộc tính phù hợp từFragmentContainerView, các trường hợp vi phạm nhưNavHostFragment. (b/142421837)
Phiên bản 1.2.0-beta01
Ngày 9 tháng 10 năm 2019
Phát hành androidx.fragment:fragment:1.2.0-beta01, androidx.fragment:fragment-ktx:1.2.0-beta01 và androidx.fragment:fragment-testing:1.2.0-beta01. Phiên bản 1.2.0-beta01 bao gồm các thay đổi sau.
Tính năng mới
FragmentContainerViewbổ sung tính năng hỗ trợ việc thêm một Mảnh ban đầu có hỗ trợ thêm các thuộc tính XMLandroid:namevàandroid:tagkhông bắt buộc. Không giống như thẻ<fragment>,FragmentContainerViewsử dụng mộtFragmentTransactionbình thường nâng cao để thêm Mảnh ban đầu, cho phépFragmentTransactionthực hiện các thao tác khác trênFragmentContainerViewvà cho phép sử dụng tính năng Liên kết chế độ xem cho bố cục. (b/139830628, b/141177981)- Giờ đây, các Mảnh chứa cảnh báo tìm lỗi mã nguồn cung cấp một bản sửa lỗi nhanh để thay thế
<fragment>bằngFragmentContainerView. (b/139830056)
Sửa lỗi
- Sửa
ClassCastExceptionkhi sử dụngandroidx.transition. (b/140680619) - Giờ đây, khi sử dụng tính năng Chuyển đổi
1.3.0-beta01, các Mảnh đang chờandroidx.transitionchuyển đổi (ngoài các chuyển đổi khung hình và ảnh động đã được khắc phục trong Mảnh1.2.0-alpha03) và Mảnh1.2.0-alpha02lần lượt hoàn tất trước khi gửionDestroyView(). (aosp/1119841) - Giờ đây, khi sử dụng tính năng Chuyển đổi
1.3.0-beta01, các Mảnh đã huỷ đúng cách các lượt chuyển đổiandroidx.transitiontrước khi bắt đầu các lượt chuyển đổi/ảnh động mới trên cùng một vùng chứa. (aosp/1119841) - Khắc phục vấn đề trên API 17 trở xuống khi sử dụng quá trình chuyển đổi
androidx.transitiontrên chế độ xem gốc của Mảnh khi sử dụngFragmentContainerView. (b/140361893) - Giờ đây, cấu phần phần mềm
fragment-testingphụ thuộc vào AndroidX Test1.2.0, khắc phục sự không tương thích với Espresso 3.2.0 mới nhất. (b/139100149) - Xoá việc sử dụng
Log.wtrong FragmentManager. (aosp/1126468)
Vấn đề đã biết
onInflate()của Mảnh không nhận được các thuộc tính phù hợp từFragmentContainerView, các trường hợp vi phạm nhưNavHostFragment. (b/142421837)
Phiên bản 1.2.0-alpha04
Ngày 18 tháng 9 năm 2019
Phát hành androidx.fragment:fragment:1.2.0-alpha04, androidx.fragment-ktx:example:1.2.0-alpha04 và androidx.fragment:fragment-testing:1.2.0-alpha04. Phiên bản 1.2.0-alpha04 bao gồm các thay đổi sau.
Thay đổi về API
- Ngừng sử dụng phương thức
getFragmentManager()vàrequireFragmentManager()trênFragment, thay vào đó là một phương thứcgetParentFragmentManager()duy nhất. Phương thức này sẽ trả vềFragmentManagerkhông rỗng mà Mảnh được thêm vào (bạn có thể sử dụngisAdded()để xác định xem có thể gọi an toàn hay không). (b/140574496) - Phương thức
FragmentManager.enableDebugLoggingtĩnh không dùng nữa. Giờ đây, FragmentManager đã tuân thủLog.isLoggable()đối với thẻFragmentManager, cho phép bạn bật tính năng ghi nhật kýDEBUGhoặcVERBOSEmà không cần biên dịch lại ứng dụng của bạn. (aosp/1116591)
Sửa lỗi
- Các Mảnh hiện bị huỷ đúng cách trong khi thoát ảnh động trên các Mảnh khác đang chạy. (b/140574199)
- Khắc phục vấn đề Mảnh gọi
Activity.findViewById()trong khi trước đó Mảnh không làm việc này. (aosp/1116431)
Phiên bản 1.2.0-alpha03
Ngày 5 tháng 9 năm 2019
Phát hành androidx.fragment:fragment:1.2.0-alpha03, androidx.fragment:fragment-ktx:1.2.0-alpha03 và androidx.fragment:fragment-testing:1.2.0-alpha03. Bạn có thể xem các thay đổi trong phiên bản này tại đây.
Thay đổi về API
FragmentContainerViewđổi tên thànhfinal(b/140133091)
Sửa lỗi
FragmentContainerViewhiện sẽ đảo ngược thứ tự bản vẽ khi bật các Mảnh rời khỏi ngăn xếp lui. (b/139104187)- Khắc phục vấn đề trong đó ảnh động sẽ chạy sai khi vừa bật lên một Mảnh và thêm một Mảnh mới cùng một lúc. (b/111659726)
- Giờ đây, các Mảnh đang chờ chuyển đổi (ngoài ảnh động đã được khắc phục trong Mảnh
1.2.0-alpha02) để hoàn tất trước khi gửionDestroyView(). (b/138741697)
Phiên bản 1.2.0-alpha02
Ngày 7 tháng 8 năm 2019
Phát hành androidx.fragment:fragment:1.2.0-alpha02, androidx.fragment:fragment-ktx:1.2.0-alpha02 và androidx.fragment:fragment-testing:11.2.0-alpha02. Bạn có thể xem các thay đổi trong phiên bản này tại đây.
Tính năng mới
SavedStateViewModelFactoryhiện là trạng thái ban đầu mặc định được sử dụng khi dùngby viewModels(),by activityViewModels(), hàm khởi tạoViewModelProviderhoặcViewModelProviders.of()vớiFragment. (b/135716331)- Các ảnh động mặc định khi sử dụng
TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSE,TRANSIT_FRAGMENT_FADEvớisetTransitiontrênFragmentTransactionđã được cập nhật để khớp với ảnh động do các hoạt động sử dụng trên thiết bị Android 10. (aosp/1012812, aosp/1014730)
Thay đổi về API
- Giới thiệu
FragmentContainerViewlàm vùng chứa được đề xuất cho các Mảnh được thêm linh động, thay thế việc sử dụngFrameLayout, v.v. vì tính năng này khắc phục các vấn đề sắp xếp thứ tự của ảnh động z và tổng hợp các phần lồng ghép cửa sổ gửi đến các Mảnh. (b/37036000, aosp/985243, b/136494650) - Thêm phương thức
FragmentManager.findFragment(View)tĩnh để truy xuất Mảnh chứa từ một chế độ xem bị một Mảnh tăng cường. Tiện ích Kotlin cũng có sẵn trongfragment-ktx. (aosp/1090757) - Thêm các phương thức nạp chồng mới của
add()vàreplace()vàoFragmentTransactionthực hiệnClass<? extends Fragment>vàBundlekhông bắt buộc của đối số. Các phương thức này sử dụngFragmentFactorycủa bạn để tạo một phiên bản của Mảnh để thêm. Các tiện ích Kotlin sử dụng các loại đã sửa đổi (tức làfragmentTransaction.replace<YourFragment>(R.id.container)) cũng đã được thêm vàofragment-ktx. (b/126124987) - Thêm chú thích
@MainThreadvào phương thức gọi lại trong vòng đờiFragment. (b/127272564) - Ngừng sử dụng các API liên quan đến tiêu đề breadcrumb (tập hợp liên kết phân cấp) trên
FragmentTransactionvàFragmentManager.BackStackEntry. (b/138252944) - Phương thức
setTransitionStyletrênFragmentTransactionkhông còn được dùng nữa. (aosp/1011537) - Nhiều phương thức trong
FragmentManagerkhông còn làabstract. Bản thânFragmentManagervẫn làabstractvà không được tạo bản sao hay mở rộng trực tiếp; bạn sẽ tiếp tục chỉ nhận được một thực thể hiện có từgetSupportFragmentManager(),getChildFragmentManager(), v.v.
Sửa lỗi
- Từ Mảnh
1.1.0-rc04: Giờ đây, các Mảnh huỷ bỏ chính xác các quá trình chuyển đổi bị hoãn trên Mảnh được bật lên. (b/138251858) - Từ Fragment
1.1.0-rc03: Khắc phục sự cố khi việc gọipostponeEnterTransition()với thời gian chờ nhiều hơn một lần sẽ không huỷ các lần hết thời gian chờ trước đó. (b/137797118) - Từ Fragment
1.1.0-rc02: Khắc phục sự cố trongFragmentPagerAdaptervàFragmentStatePagerAdapterkhi xoá mục hiện tại. (b/137209870) - Giờ đây, các Mảnh chờ ảnh động hoàn tất trước khi gửi
onDestroyView(). (b/136110528) - Giờ đây, ảnh động trong Mảnh từ các mảnh con và các thành phần con cháu được xử lý đúng cách khi tạo ảnh động cho Mảnh mẹ. (b/116675313)
- Sửa lỗi
NullPointerExceptionkhi sử dụng chuyển đổi thành phần dùng chung đồng thời kết hợp thao tác bật lên và thêm. (b/120507394) - Thêm giải pháp cho
IllegalStateExceptionkhi sử dụngFragmentPagerAdaptervàFragmentStatePagerAdaptertrong các thử nghiệm Robolectric. (b/137201343)
Phiên bản 1.2.0-alpha01
Ngày 2 tháng 7 năm 2019
Phát hành androidx.fragment:fragment:1.2.0-alpha01, androidx.fragment:fragment-ktx:1.2.0-alpha01 và androidx.fragment:fragment-testing:1.2.0-alpha01. Bạn có thể xem các thay đổi trong phiên bản này tại đây.
Tính năng mới
- Giờ đây, FragmentManager gọi
requestApplyInsets()sau khi đính kèm chế độ xem của Mảnh và ngay trước khi gọionViewCreated(), đảm bảo rằng chế độ xem của bạn luôn có phần lồng ghép chính xác. (b/135945162)
Sửa lỗi
- Sửa lỗi
NullPointerExceptionkhi bật lênFragmentTransactionsử dụngsetPrimaryNavigationFragment()trướcreplace(). (b/134673465)
Phiên bản 1.1.0
Phiên bản 1.1.0
Ngày 5 tháng 9 năm 2019
Phát hành androidx.fragment:fragment:1.1.0, androidx.fragment:fragment-ktx:1.1.0 và androidx.fragment:fragment-testing:1.1.0. Bạn có thể xem các thay đổi trong phiên bản này tại đây.
Những thay đổi quan trọng kể từ phiên bản 1.0.0
- fragment-testing: Cấu phần phần mềm
fragment-testingcung cấp một lớpFragmentScenariođể kiểm tra riêng một Mảnh. Xem Kiểm tra tài liệu về Fragment của ứng dụng để biết thêm chi tiết. - FragmentFactory: Giờ đây, bạn có thể đặt
FragmentFactorytrênFragmentManagerđể quản lý việc tạo các thực thể của mảnh và loại bỏ yêu cầu nghiêm ngặt để có hàm khởi tạo không đối số. - Uỷ quyền thuộc tính Kotlin cho ViewModels: Cấu phần phần mềm
fragment-ktxhiện chứa 2 uỷ quyền thuộc tính Kotlin:by viewModels()để truy cập vào ViewModels liên kết với từng mảnh vàby activityViewModels()để truy cập vào ViewModels trong phạm vi hoạt động. - Vòng đời tối đa: Giờ đây, bạn có thể đặt trạng thái Vòng đời tối đa cho một Mảnh bằng cách gọi
setMaxLifecycle()trênFragmentTransaction. Thao tác này sẽ thay thế chosetUserVisibleHint()hiện không dùng nữa.FragmentPagerAdaptervàFragmentStatePagerAdaptercó một hàm khởi tạo mới cho phép bạn chuyển sang hành vi mới. - Hàm khởi tạo FragmentActivity LayoutId: Giờ đây, bạn có thể gọi lớp con của
FragmentActivitytrong hàm khởi tạo trênFragmentActivitylấy mã nhận dạngR.layout, cho biết bố cục nào cần đặt làm thành phần hiển thị nội dung như một cách khác để gọisetContentView()trongonCreate(). Việc này không làm thay đổi yêu cầu lớp con có hàm khởi tạo không đối số. - Hàm khởi tạo Fragment LayoutId: Giờ đây, bạn có thể gọi lớp con của
Fragmenttrong hàm khởi tạo trênFragmentlấy mã nhận dạngR.layout, cho biết bố cục nào cần được sử dụng cho Mảnh này như một cách khác để ghi đèonCreateView(). Bạn có thể định cấu hình bố cục tăng cường trongonViewCreated(). - Hoãn với thời gian chờ: Một nội dung quá tải
postponeEnterTransition()mới đã được thêm vào làm hết thời gian chờ.
Phiên bản 1.1.0-rc04
Ngày 7 tháng 8 năm 2019
Phát hành androidx.fragment:fragment:1.1.0-rc04, androidx.fragment:fragment-ktx:1.1.0-rc04 và androidx.fragment:fragment-testing:1.1.0-rc04. Bạn có thể xem các thay đổi trong phiên bản này tại đây.
Sửa lỗi
- Giờ đây, các Mảnh huỷ bỏ chính xác các quá trình chuyển đổi bị hoãn trên Mảnh được bật lên. (b/138251858)
Phiên bản 1.1.0-rc03
Ngày 19 tháng 7 năm 2019
Phát hành androidx.fragment:fragment:1.1.0-rc03, androidx.fragment:fragment-ktx:1.1.0-rc03 và androidx.fragment:fragment-testing:1.1.0-rc03. Bạn có thể xem các thay đổi trong phiên bản này tại đây.
Sửa lỗi
- Khắc phục sự cố khi việc gọi
postponeEnterTransition()với thời gian chờ nhiều hơn một lần sẽ không huỷ các lần hết thời gian chờ trước đó. (b/137797118)
Phiên bản 1.1.0-rc02
Ngày 17 tháng 7 năm 2019
Phát hành androidx.fragment:fragment:1.1.0-rc02, androidx.fragment:fragment-ktx:1.1.0-rc02 và androidx.fragment-testing:fragment:1.1.0-rc02. Bạn có thể xem các thay đổi trong phiên bản này tại đây.
Sửa lỗi
- Khắc phục sự cố trong
FragmentPagerAdaptervàFragmentStatePagerAdapterkhi xoá mục hiện tại. (b/137209870)
Phiên bản 1.1.0-rc01
Ngày 2 tháng 7 năm 2019
Phát hành androidx.fragment:fragment:1.1.0-rc01, androidx.fragment:fragment-ktx:1.1.0-rc01 và androidx.fragment:fragment-testing:1.1.0-rc01. Bạn có thể xem các thay đổi trong phiên bản này tại đây.
Sửa lỗi
- Giờ đây, Mảnh cập nhật đúng chế độ hiển thị khi sử dụng thao tác
show()hoặchide()trong khi quá trình chuyển đổi đang chạy. (b/133385058) - Sửa lỗi
NullPointerExceptionkhi bật lênFragmentTransactionsử dụngsetPrimaryNavigationFragment()trướcreplace(). (b/134673465)
Phiên bản 1.1.0-beta01
Ngày 5 tháng 6 năm 2019
Phát hành androidx.fragment:fragment:1.1.0-beta01, androidx.fragment:fragment-ktx:1.1.0-beta01 và androidx.fragment:fragment-testing:1.1.0-beta01. Bạn có thể xem các thay đổi trong phiên bản này tại đây.
Sửa lỗi
- Các lệnh gọi lại
androidx.lifecycle.Lifecycle(cụ thể có liên quan đếnSTARTED,RESUMED,PAUSED,STOPPEDvàDESTROYED) cho các Mảnh lồng nhau hiện đã được lồng đúng cách. (b/133497591) - Giờ đây, các phiên bản
OnBackPressedCallbackđã đăng ký trongonCreate()của Fragment được ưu tiên hơn phiên bản FragmentManager con. (b/133175997) - Các Mảnh con không còn ảnh động khi Mảnh mẹ được thay thế. (b/121017790)
- Giờ đây, các ảnh động và chuyển đổi Mảnh bị bỏ qua khi bạn sử dụng
animateLayoutChanges="true", khắc phục vấn đề các Mảnh không bị huỷ đúng cách. (b/116257087)
Phiên bản 1.1.0-alpha09
Ngày 16 tháng 5 năm 2019
Phát hành androidx.fragment:fragment:1.1.0-alpha09, androidx.fragment:fragment-ktx:1.1.0-alpha09 và androidx.fragment:fragment-testing:1.1.0-alpha09. Bạn có thể xem các thay đổi trong phiên bản này tại đây.
Thay đổi về API
- Giờ đây, các Mảnh nhận một lệnh gọi lại đến phương thức
onPrimaryNavigationFragmentChanged(boolean)mới khi Mảnh điều hướng chính thay đổi. aosp/960857
Sửa lỗi
- Các mục trong trình đơn được tăng cường bởi một Mảnh con đã được xoá chính xác khi xoá Mảnh mẹ. b/131581013
Phiên bản 1.1.0-alpha08
Ngày 7 tháng 5 năm 2019
Phát hành androidx.fragment:fragment:1.1.0-alpha08, androidx.fragment:fragment-ktx:1.1.0-alpha08 và androidx.fragment:fragment-testing:1.1.0-alpha08. Bạn có thể xem các thay đổi trong phiên bản này tại đây.
Bản phát hành này không tương thích với Preferences 1.1.0-alpha01 đến 1.1.0-alpha04. Vui lòng nâng cấp lên Preferences 1.1.0-alpha05 khi sử dụng phiên bản Fragment này.
Tính năng mới
- Thêm một phương thức nạp chồng mới của
postponeEnterTransition()có thời gian chờ, mà sau đó Mảnh sẽ tự động gọistartPostponedEnterTransition()b/120803208
Thay đổi về API
- Thay đổi có thể gây lỗi: các phương thức
FragmentFactoryvàinstantiatekhông dùng nữa tiến hành trênBundleđã bị xoá. aosp/953856 - Thay đổi có thể gây lỗi: Hằng số
RESUME_ONLY_CURRENT_FRAGMENTvàUSE_SET_USER_VISIBLE_HINTtrongFragmentPagerAdaptervàFragmentStatePagerAdapterlần lượt được đổi tên thànhBEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENTvàBEHAVIOR_SET_USER_VISIBLE_HINT. aosp/954782
Sửa lỗi
- Các Mảnh đã bị giới hạn vòng đời thông qua
setMaxLifecycle()không còn được tiếp tục trước khi đạt đến trạng thái cuối cùng. b/131557151 - Khi sử dụng
setMaxLifecycle(Lifecycle.State.CREATED), các Mảnh sẽ huỷ đúng cách chế độ xem của chúng. aosp/954180
Phiên bản 1.1.0-alpha07
Ngày 25 tháng 4 năm 2019
Phát hành androidx.fragment:fragment:1.1.0-alpha07, androidx.fragment:fragment-ktx:1.1.0-alpha07 và androidx.fragment:fragment-testing:1.1.0-alpha07. Bạn có thể xem các thay đổi trong phiên bản này tại đây.
Tính năng mới
- Giờ đây, bạn có thể đặt trạng thái Vòng đời tối đa cho một Mảnh bằng cách gọi
setMaxLifecycle()trênFragmentTransaction. Thao tác này sẽ thay thế chosetUserVisibleHint()hiện không dùng nữa.FragmentPagerAdaptervàFragmentStatePagerAdaptercó một hàm khởi tạo mới cho phép bạn chuyển sang hành vi mới. (b/129780800)
Các thay đổi về API
- Giờ đây, bạn chỉ có thể gọi
moveToState(STARTED)trênFragmentScenariotrên các thiết bị có API 24 trở lên. (b/129880016)
Các thay đổi về hành vi
- Do (b/129907905), các Mảnh trên ngăn xếp lùi sẽ không nhận được lệnh gọi lại đến
onCreateView()khi hoạt động lưu trữ được tạo lại. Giờ đây,onCreateView()sẽ chỉ được gọi khi Mảnh hiển thị (tức là ngăn xếp lùi được bật lên).
Sửa lỗi
- Khắc phục vấn đề khi sử dụng thẻ
<fragment>trong XML và hàm khởi tạocontentLayoutIdcủaFragmentActivityhoặcAppCompatActivity. (b/129907905) - Khắc phục vấn đề về việc các Mảnh trên ngăn xếp lui không được di chuyển sang ít nhất
CREATEDsau khi thay đổi cấu hình, khiến các Fragment ViewModel và các thành phần con cháu được giữ lại không được xử lý đúng cách. (b/129593351) - Khắc phục sự cố trong
restoreSaveStatedo việc huỷ đồng bộ hoá các Mảnh được giữ lại sau khi lưu trạng thái thực thể. (b/130433793) (aosp/947824) - Khắc phục các vấn đề trong đó
OnBackPressedCallbackđược thêm bằng vòng đời Mảnh sẽ không được gọi nếuFragmentManagercó ngăn xếp lui. Xem androidx.activity 1.0.0-alpha07 để biết thêm chi tiết. (aosp/948209) - Các Mảnh không còn thực thi
LAYER_TYPE_HARDWAREcho ảnh động nữa. Nếu bạn đặc biệt cần ảnh động lớp phần cứng, vui lòng đặt làm một phần ảnh động. (b/129486478)
Phiên bản 1.1.0-alpha06
Ngày 3 tháng 4 năm 2019
Phát hành androidx.fragment:fragment:1.1.0-alpha06, androidx.fragment:fragment-ktx:1.1.0-alpha06 và androidx.fragment:fragment-testing:1.1.0-alpha06. Bạn có thể xem các thay đổi trong phiên bản này tại đây.
Tính năng mới
- Các ngoại lệ do FragmentManager gửi hiện có tên của Mảnh trong thông báo. (b/67759402)
Các thay đổi về API
- Giờ đây,
FragmentvàFragmentActivitychứa một hàm khởi tạo thứ hai nhận@LayoutRes intthay thế hoạt động trước đó của bạn khi thêm chú thích lớp bằng@ContentView. Cách tiếp cận này hoạt động trong cả mô-đun ứng dụng và thư viện. (b/128352521) - Giờ đây,
onActivityResult()của FragmentActivity được đánh dấu đúng cách là@CallSuper. (b/127971684) - Phương thức
instantiatecủa FragmentFactory dùng Gói đối số đã không còn được dùng nữa và các ứng dụng nên sử dụng phương thức nạp chồng mớiinstantiatemà không sử dụng Gói này. (b/128836103) - Giờ đây, các phương thức
FragmentScenariođược chú thích đúng cách bằng@StyleRes. (aosp/924193) - Ngừng sử dụng
FragmentTabHost. (b/127971835) getThemedContext()của FragmentActivity đã bị xoá. (aosp/934078)
Sửa lỗi
- Khắc phục một lỗi hồi quy trong 1.1.0-alpha05 khiến Mảnh được chia sẻ nhấp nháy trên màn hình. (b/129405432)
- Khắc phục vấn đề trong đó mảnh điều hướng chính sẽ bị mất sau một loạt thao tác popBackStack+replace+popBackStack. (b/124332597)
- Khắc phục vấn đề khi sử dụng hàm khởi tạo
@ContentViewtrên Hoạt động của bạn khi khôi phục trạng thái Mảnh. (b/127313094) - Sửa lỗi logic của
setTargetFragment()khi thay thế một Mảnh mục tiêu hiện có bằng một Mảnh chưa được đính kèm vào FragmentManager. (aosp/932156)
Phiên bản 1.1.0-alpha05
Ngày 13 tháng 3 năm 2019
Phát hành androidx.fragment:fragment:1.1.0-alpha05, androidx.fragment:fragment-ktx:1.1.0-alpha05 và androidx.fragment:fragment-testing:1.1.0-alpha05. Bạn có thể xem danh sách đầy đủ các thay đổi trong phiên bản này tại đây.
Tính năng mới
- Hoạt động tra cứu chú giải
@ContentViewhiện được lưu vào bộ nhớ đệm (b/123709449)
Thay đổi về hành vi
- Giờ đây, thao tác gọi
remove(),hide(),show(),detach()vàsetPrimaryNavigationFragment()có một Mảnh được đính kèm với một FragmentManager khác sẽ gửiIllegalStateExceptionthay vì tắt tiếng không thành công (aosp/904301)
Sửa lỗi
onNewIntentchoFragmentActivityhiện được đánh dấu chính xác là@CallSuper(b/124120586)- Khắc phục vấn đề trong đó
onDismiss()củaDialogFragmentcó thể được gọi hai lần khi sử dụnggetDialog().dismiss()hoặcgetDialog().cancel()(b/126563750)
Phiên bản 1.1.0-alpha04
Ngày 7 tháng 2 năm 2019
Phát hành androidx.fragment:fragment 1.1.0-alpha04, androidx.fragment:fragment-ktx 1.1.0-alpha04 và androidx.fragment:fragment-testing 1.1.0-alpha04.
Tính năng mới
- Thêm chức năng hỗ trợ chú giải lớp
@ContentViewđể cho phép bạn chỉ định tệp XML bố cục nào sẽ được tăng cường để thay thế cho việc ghi đèonCreateView(). Bạn nên thực hiện các công việc liên quan đến chế độ xem trongonViewCreated(). (aosp/837619) fragment-testinghiện phụ thuộc vàoandroidx.test:core-ktx1.1.0 ổn định (b/121209673)- Giờ đây, bạn có thể sử dụng
openActionBarOverflowOrOptionsMenuvớiFragmentScenariođể kiểm tra trình đơn tuỳ chọn được lưu trữ trên Mảnh (b/121126668)
Thay đổi về API
- Thêm phương thức
requireArguments()trả về@NonNull Bundlehoặc gửiIllegalStateException(b/121196360) - Thêm ghi chú rằng
getLifecycle(),getViewLifecycleOwner(), vàgetViewLifecycleOwnerLiveData()không được ghi đè và sẽ được đưa ra vào bản phát hành chính thức trong tương lai. Vui lòng gửi yêu cầu về tính năng nếu bạn hiện đang ghi đè phương thức này. (aosp/880714) - Thêm ghi chú rằng
getViewModelStore()không được ghi đè và sẽ được đưa ra vào bản phát hành chính thức trong tương lai. Vui lòng gửi yêu cầu về tính năng nếu bạn hiện đang ghi đè phương thức này. (aosp/880713) - Khắc phục vấn đề về khả năng tương thích tệp nhị phân với các bản phát hành trước đó của Mảnh. (aosp/887877) (aosp/889834)
Sửa lỗi
- Các Mảnh mục tiêu sẽ bị xoá khi bạn chuyển
nullchosetTargetFragment(). (aosp/849969) - Khắc phục vấn đề Mảnh mục tiêu đôi khi không có sẵn trong hoặc sau
onDestroy(). (b/122312935) - Giờ đây, DialogFragment’s onDismiss() được gọi trước
onDestroy(). (aosp/874133) (aosp/890734)
Phiên bản 1.1.0-alpha03
Ngày 17 tháng 12 năm 2018
Tính năng mới
- Mảnh hiện triển khai
BundleSavedStateRegistryOwnervà phụ thuộc vào thư viện SavedState mới phát hành [aosp/824380] - Thêm phương thức uỷ quyền thuộc tính Kotlin
by activityViewModelsđể truy xuất ViewModels liên kết với Activity vùng chứa [b/119050253] - Mở rộng phương thức uỷ quyền thuộc tính
by viewModelsKotlin để thực hiện một phương thức lambda không bắt buộc nhằm nhậnViewModelStoreOwner, cho phép bạn chuyển vào Mảnh mẹ hoặcViewModelStoreOwnertuỳ chỉnh khác có mã nhưval viewModel: MyViewModel by viewModels(::requireParentFragment)[b/119050253]
Thay đổi về API
FragmentScenariohiện cho phép bạn nêu rõ một giao diện nhưTheme.AppCompat[b/119054431]. Đây là một thay đổi có thể gây lỗi.- Thêm phương thức
requireView()trả về@NonNull Viewhoặc gửiIllegalStateException[b/120241368] - Thêm phương thức
requireParentFragment()trả về một@NonNull Fragmenthoặc gửiIllegalStateException[b/112103783]
Sửa lỗi
- Khắc phục IllegalStateException: Trạng thái không lưu được b/120814739
- Các Mảnh đang được khôi phục từ trạng thái phiên bản đã lưu sẽ luôn nhận được
Bundlecó giá trị không rỗng [b/119794496] - Các Mảnh đã xoá không còn sử dụng lại được đối tượng
Lifecyclecủa chúng nếu được thêm lại [b/118880674]
Phiên bản 1.1.0-alpha02
Ngày 3 tháng 12 năm 2018
Tính năng mới
- Giờ đây, các tiện ích Kotlin của FragmentScenario cho phép bạn sử dụng biểu thức lambda cho quá trình xây dựng Mảnh để thay thế việc chuyển vào phiên bản
FragmentFactory. (aosp/812913)
Sửa lỗi
- Khắc phục IllegalStateException khi sử dụng các Mảnh lồng nhau trên ngăn xếp lui (b/119256498)
- Khắc phục sự cố khi sử dụng
FragmentScenario.recreate()vớiFragmentFactory(aosp/820540) - Khắc phục vấn đề các Mảnh mục tiêu không truy cập được sau khi Mảnh bị xoá (aosp/807634)
Phiên bản 1.1.0-alpha01
Ngày 5 tháng 11 năm 2018
Đây là bản phát hành đầu tiên của cấu phần phần mềm fragment-testing và FragmentScenario, được tạo trên các API androidx.test:core. Xem tài liệu về Fragment thử nghiệm để biết thêm thông tin.
Tính năng mới
- Lớp FragmentScenario mới để thử nghiệm các Mảnh riêng biệt.
- Giờ đây, bạn có thể đặt
FragmentFactorytrên bất kỳFragmentManagernào để kiểm soát cách các phiên bản Fragment mới được tạo bản sao. - Thêm một uỷ quyền thuộc tính
by viewModels()Kotlin mới để truy xuất ViewModels từ một Mảnh. - Các sự kiện đầu vào đang chờ xử lý (chẳng hạn như lượt nhấp) nay bị huỷ trong
onStop()của Mảnh.
Thay đổi về API
- Mở rộng đáng kể các thẻ chú giải có tính chất rỗng trên bề mặt API của Mảnh.
Sửa lỗi
- Khắc phục vấn đề khiến các thao tác Mảnh không thành công từ LiveData (b/77944637)
Vấn đề đã biết
- Không thể truy cập các Mảnh mục tiêu sau khi một Mảnh bị xoá khỏi FragmentManager.
fragment-testingphụ thuộc vàoandroidx.test:core:1.0.0-beta01thay vìandroidx.test:core:1.0.0chính xác.