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 30 tháng 10 năm 2024 | 1.8.5 | - | - | - |
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.3" // Java language implementation implementation "androidx.fragment:fragment:$fragment_version" // Kotlin implementation "androidx.fragment:fragment-ktx:$fragment_version" // Compose implementation "androidx.fragment:fragment-compose:$fragment_version" // Testing Fragments in Isolation debugImplementation "androidx.fragment:fragment-testing-manifest:$fragment_version" androidTestImplementation "androidx.fragment:fragment-testing:$fragment_version" }
Kotlin
dependencies { val fragment_version = "1.8.3" // Java language implementation implementation("androidx.fragment:fragment:$fragment_version") // Kotlin implementation("androidx.fragment:fragment-ktx:$fragment_version") // Compose implementation("androidx.fragment:fragment-compose:$fragment_version") // Testing Fragments in Isolation debugImplementation("androidx.fragment:fragment-testing:$fragment_version") }
Để 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.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 lỗi
IllegalStateException
dosaveBackStack
kích hoạt chỉ sau khi cử chỉ Xem trước thao tác quay lại bị huỷ hoặc bị 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 sau.
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 thực hiện nhanh cử chỉ quay lại sẽ khiến các Mảnh gặp sự cố khi sử dụng Androidx Transitions. (Ibc038, b/364804225)
- Khắc phục vấn đề trong các mảnh, trong đó việc làm gián đoạn cử chỉ vuốt ngược để dự đoán sẽ đưa trình quản lý mảnh vào 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
UninitializedPropertyAccessException
trongAndroidFragment
khi tự động hoán đổi Lớp mà thực thểAndroidFragment
củ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
FragmentManager
hiện tính đến 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 việc quay lại hệ thống không còn gây raIndexOutOfBoundsException
. (I9ba32, b/342316801)AndroidFragment
khô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,
AndroidFragment
xử lý đúng cách các trường hợp mà mảnh mẹ được đặt vào ngăn xếp lui của Mảnh, tránh các vấn đề "Không tìm thấy thành phần hiển thị cho mã nhận dạng" khi bật lại mảnh đó. (I94608) - Các mảnh được thêm thông qua phương thức
FragmentTransaction.add
sử dụngViewGroup
hiện sẽ đợionContainerAvailable
trước khi chuyển sangonStart()
. Điều này ảnh hưởng đến người dùng API đó, chẳng hạn nhưAndroidFragment
, hiện đang chờAndroidFragment
nhập lại thành phần trước khi 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 đề các mảnh không có vùng chứa sẽ ngay lập tức
DESTROYED
khi bắt đầu cử chỉ vuốt ngược để dự đoán. Giờ đây, các đối tượng này được giữ ở trạng tháiCREATED
cho đế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-compose
hiện chứaAndroidFragment
Composable
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. Phương thứ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 sử dụng phương thức này để thay thế trực tiếp phương pháp đề xuất trước đó là sử dụngAndroidViewBinding
để tăng cường một Mảnh. - Lệnh gọi lại
onBackStackChangeCancelled
trên giao diệnOnBackStackChangedListener
củaFragmentManager
hiện kích hoạt trong quá trình thực thi các thao tác trongFragmentManager
, di chuyển lệnh gọi lại này đến gần hơn với thời gian của lệnh gọi lạionBackStackChangeCommitted
.
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
onBackStackChangeCancelled
trên giao diệnFragmentManagers OnBackStackChangedListener
hiện kích hoạt trong quá trình thực thi các thao tác trongFragmentManager
, di chuyển lệnh gọi lại này đến gần hơn với thời gian của lệnh gọi lạionBackStackChangeCommitted
. (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
: Tính năng xem trước thao tác quay lại hiện 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 Chuyển đổi Androidx có thể tìm kiếm. Điều này giúp khắc phục vấn đề trong đó việc huỷ một giao dịch có thể tìm kiếm một phần sẽ gây ra màn hình đ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 việc đặtsharedElement
mà không có bất kỳ quá trình chuyển đổi nào khác sẽ không chạy được. (Iec48e) - Từ Mảnh
1.7.0-rc02
: Đã khắc phục lỗi sẽ xảy ra sự cố nếu thêm một phần tử dùng chung không tìm kiếm được vào một giao dịch mà tất cả các lượt chuyển đổi khác đều có thể tìm kiếm. Giờ đây, giao dịch sẽ được coi là không thể tìm kiếm một cách chính xá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
AndroidFragment
Composable
mớ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. Phương thứ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 phương thức này để thay thế trực tiếp choComposable
AndroidViewBinding.(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 bao gồm các thay đổi sau.
Sửa lỗi
- Tính năng xem trước thao tác quay lại hiện 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. Thao tác này sẽ khắc phục vấn đề trong đó việc 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. (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 bao gồm các thay đổi sau.
Hỗ trợ cử chỉ xem trước thao tác quay lại
- Giờ đây, các mảnh sẽ hỗ trợ tính năng Xem trước thao tác quay lại trong ứng dụng khi sử dụng
Animator
hoặ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 Ảnh động/Chuyển đổi trước khi quyết định thực hiện giao dịch thông qua việc hoàn tất cử chỉ hoặc huỷ.
Hệ thống chuyển tiếp | 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ó |
Khung Transition |
R.transition |
Không |
AndroidX Transition với Transition 1.4.1 trở xuống |
R.transition |
Không |
AndroidX Transition với Transition 1.5.0 |
R.transition |
Có |
Nếu bạn thấy bất kỳ vấn đề nào với tính năng hỗ trợ 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 đề về 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 dùng FragmentManager.enabledPredictiveBack(false)
trong onCreate()
của Hoạt động.
FragmentManager.OnBackStackChangedListener()
hiện cung cấp onBackStackChangeProgressed()
và onBackStackChangeCancelled()
để nhận tiến trình xem trước thao tác quay lại và sự kiện bị huỷ tương ứng.
Cấu phần phần mềm Compose cho mảnh
Một cấu phần phần mềm fragment-compose
mới đã được tạo, 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à phương thức mở rộng content
trên Fragment
, giúp bạn dễ dàng sử dụng Compose cho giao diện người dùng của một Mảnh riêng lẻ bằng cách tạo 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
sharedElement
mà không có bất kỳ lượt chuyển đổi nào khác sẽ không chạy được. (Iec48e) - Khắc phục lỗi nếu một thành phần dùng chung không thể 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 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 thể tìm kiếm một cách chính xá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
FragmentHostCallback
hiện được viết bằng Kotlin để tính chất rỗng của loại chung của Máy chủ khớp với tính chất rỗng của loại trả về củaonGetHost()
. (I40af5)
Sửa lỗi
- Khắc phục vấn đề khi thực hiện cử chỉ Dự đoán 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 vấn đề trong các Mảnh, trong đó việc làm gián đoạn quá trình chuyển đổi sắp tới bằng cử chỉ vuốt ngược Dự đoán sẽ huỷ chế độ xem đang nhập và để lại 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 Fragment trước đây, trong đó việc sử dụng tính năng hỗ trợ Xem trước thao tác quay lại của mảnh cho
Animator
hoặc AndroidX Transition, Mảnh sẽ gửiNullPointerException
từhandleOnBackProgressed
nếu chưa cóFragmentManager.OnBackStackChangedListener
nà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.
Cấu phần phần mềm Compose cho mảnh
Một cấu phần phần mềm fragment-compose
mới đã được tạo, 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à phương thức mở rộng content
trên Fragment
, giúp bạn dễ dàng sử dụng Compose cho giao diện người dùng của một Mảnh riêng lẻ bằng cách tạo 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()
để nhận tiến trình xem trước thao tác quay lại và sự kiện bị huỷ tương ứng. (214b87)
Vấn đề đã biết
- Khi sử dụng tính năng hỗ trợ Xem trước thao tác quay lại của Fragment cho
Animator
hoặc Chuyển đổi AndroidX, Fragment sẽ gửi mộtNullPointerException
từhandleOnBackProgressed
nếu chưa từng thêmFragmentManager.OnBackStackChangedListener
thông quaaddOnBackStackChangedListener
. Bạn có thể thêm trình nghe theo cách thủ công để khắc phục sự cố. Chúng tôi sẽ cung cấp bản sửa lỗi cho vấn đề này trong bản phát hành tiếp theo của Mảnh.
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 khắc phục 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
NullPointerException
do việc đặt chuyển đổi phần tử dùng chung và không đặt được enter/exitTransition. (I8472b) - Từ Fragment
1.6.2
: Khi Mảnh củaFragmentContainerView
được tăng cường, các trạng thái của mảnh nhưFragmentManager
, Máy chủ 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 sử dụngclearBackStack
để xoá một tập hợp các mảnh, mọiViewModel
của Mảnh lồng nhau sẽ bị xoá khiViewModels
của mảnh mẹ bị 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
animateToStart
mới được thêm vào trong Chuyển đổi1.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
- Các mảnh hiện hỗ trợ tính năng Xem trước thao tác quay lại khi sử dụng hiệu ứng chuyển đổi Androidx. Nhờ vậy, bạn có thể 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 thực hiệ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 Chuyển đổi
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, thì 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 được, khiến màn hình trống. Điều này 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 gửi vấn đề về Fragment kèm theo một dự án mẫu có thể 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 vấn đề khi huỷ cử chỉ vuốt ngược để dự đoán, 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 lỗi hồi quy cho phép Ảnh động chạy 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 cố gắng quay lại hai lần liên tiếp trên mảnh thứ hai từ cuối cùng trên 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 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 lui của trình quản lý mảnh bị bỏ qua và Hoạt động kết thúc khi sử dụng tính năng quay lại hệ thống thông qua thao tác điều hướng 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 sử dụng các Mảnh có Cử chỉ xem trước thao tác quay lại từ API 34, nếu bạn đang sử dụng một hệ thống chuyển đổi không hỗ trợ tính năng tua (
Animations
,Transitions
) hoặc không có tính năng chuyển đổi nào, thì giờ đây, các Mảnh sẽ đợi cho đến khi cử chỉ hoàn tất trước khi 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 Trình tạo ảnh động tuỳ chỉnh trước khi quyết định thực hiệ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 Mảnh của
FragmentContainerView
được tăng cường, bạn hiện có thể truy cập vào các trạng thái của mảnh nhưFragmentManager
, Máy chủ và mã nhận dạng trong lệnh gọi lạionInflate
. (I1e44c, b/307427423) - Khi sử dụng
clearBackStack
để xoá một tập hợp các mảnh,ViewModel
của mọi Mảnh lồng nhau sẽ bị xoá khiViewModels
củ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 đề 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 thực thể mảnh được chuyển về 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 sử dụng lại nếu thực thể 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 đề người dùng Kotlin không thể mở rộng
ComponentDialog
mà không có phần phụ thuộc rõ ràng trên Hoạt động. (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ớpParcelable
tuỳ 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ữ trongBundle
cho 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 hai lệnh gọi lại bổ sung làonBackStackChangeStarted
vàonBackStackChangeCommitted
được gọi với mỗiFragment
ngay trước khi các lệnh gọi này được thêm/xoá khỏi ngăn xếp lui của mảnh và ngay sau khi giao dịch được thực hiện. FragmentStrictMode
đã thêm mộtWrongNestedHierarchyViolation
mớ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àochildFragmentManager
của mảnh mẹ.- Giờ đây, các API
Fragment
vàFragmentManager
nhậnIntent
hoặcIntentSender
sẽ được chú thích đú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 API khung Android tương ứng mà các phương thức này gọi vào. DialogFragment
hiện cung cấp quyền truy cập vàoComponentDialog
cơ bản thông qua APIrequireComponentDialog()
.- Giờ đây, Fragment tuỳ thuộc vào Vòng đời
2.6.1
. - Giờ đây, Fragment phụ thuộc vào SavedState
1.2.1
. - Mảnh hiện phụ thuộc vào ProfileInstaller
1.3.0
. Cấu phần phần mềm
fragment-testing-manifest
tá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 sai lệch phiên bản giữa
fragment-testing
và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 với mã yêu cầu không chính xác khi nhiều yêu cầustartActivityForResult
được thực hiện liên tiếp. (If0b9d, b/249519359) - Khắc phục vấn đề các lệnh gọi lại
onBackStackChangeListener
được gửi đi đối với các giao dịch không thực sự thay đổi ngăn xếp lui nếu chúng bị lẫn với các giao dịch thực hiện việc này. (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
postponeEnterTransition
vớ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
onBackStackChangeStarted
vàonBackStackChangeCommitted
mới sẽ chỉ gửi một mảnh 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
DialogFragment
hiện cung cấp quyền truy cập vàoComponentDialog
cơ 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ì đợi để không thành công trong thời gian chạy. (Ic9665, b/236538905)
Sửa lỗi
- Khắc phục lỗi trong
FragmentManager
, trong đó việc lưu và khôi phục trong cùng một khung có thể gây ra sự cố. (Ib36af, b/246519668) - Giờ đây, các lệnh gọi lại
OnBackStackChangedListener
onBackStackChangeStarted
vàonBackStackChangeCommitted
chỉ thực thi khi ngăn xếp luiFragmentManager
thay đổ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 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 đã tách. (I66a76, b/273568280)
Sửa lỗi
- Từ Fragment
1.5.6
: Khắc phục vấn đề khi gọiclearFragmentResultListener
bên trongsetFragmentResultListener
không hoạt động nếuLifecycle
đã làSTARTED
và có kết quả. (If7458)
Thông tin cập nhật về phần phụ thuộc
- Giờ đây, Fragment tuỳ thuộc vào Vòng đời
2.6.1
. (586fe7) - Giờ đây, Fragment phụ thuộc vào SavedState
1.2.1
. (078e4e) - Mảnh hiện 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ừ Mảnh
1.5.6
: Khắc phục vấn đề về việc xoá mọi Mảnh (cho dù Mảnh đó có thêm các mục trong Trình đơn hay không) sẽ vô hiệu hoá 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
onBackStackChangedStarted
mới trênonBackStackChangedListener
củaFragmentManager
sẽ đượ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.OnBackStackChagnedListener
cung cấp thêm hai lệnh gọi lại làonBackStackChangeStarted
và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
Fragment
vàFragmentManager
dùngIntent
hoặcIntentSender
sẽ đượ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ộtWrongNestedHierarchyViolation
mớ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àochildFragmentManager
củ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
SavedStateRegistry
trướ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-manifest
tá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áiViewModel
như 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
DialogFragment
sẽ 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ớpParcelable
tuỳ 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ữ trongBundle
cho 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
postponeEnterTransition
vớ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 đề khi việc xoá bất kỳ Mảnh nào, cho dù Mảnh đó đã thêm các mục Trình đơn hay chưa, đều sẽ làm trình đơn của hoạt động mất hiệu lực. (50f098, b/244336571)
- Khắc phục vấn đề không gọi được
clearFragmentResultListener
bên trongsetFragmentResultListener
nếuLifecycle
đã làSTARTED
và đã 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
ViewModel
như 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
FragmentController
tuỳ 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
DialogFragmentCallbacksDetector
mà 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 –
Fragment
hiện có khả năng cung cấpViewModelProvider.Factory
không có trạng thái quaCreationExtras
của Vòng đời2.5.0
. - Tích hợp hộp thoại thành phần –
DialogFragment
nay sử dụngComponentDialog
thông qua Hoạt động1.5.0
là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,
FragmentManager
sẽ lưu giữ trạng thái của thực thể đã lưu vàoBundle
thay vì lưu trực tiếp vàoParcelable
tuỳ chỉnh. - Kết quả được thiết lập qua
Fragment Result APIs
chư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,
FragmentStrictMode
cho 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
ActionBar
của hoạt động. APIMenuHost
vàMenuProvider
được thêm vào Hoạt động1.4.0
cung 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ứcdismissNow
mới sử dụngcommitNow
để cân đối với hàmshowNow
. Lưu ý thao tác này sẽ không khiếnDialog
bị 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,
FragmentManager
sẽ lưu giữ trạng thái của thực thể đã lưu vàoBundle
thay vì lưu trực tiếp vàoParcelable
tuỳ 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
ActionBar
củ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. APIMenuHost
vàMenuProvider
được thêm vào Hoạt động1.4.0-alpha01
cung 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
SavedStateViewFactory
hiện hỗ trợ việc sử dụngCreationExtras
ngay 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
CreationExtras
vào hàmby viewModels()
vàby activityViewModels()
. (Ibefe7, b/217601110)
Các thay đổi về hành vi
- Giờ đây,
DialogFragment
sử dụngComponentDialog
là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,
FragmentStrictMode
cho 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
Fragment
hiệ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
:FragmentContainerView
khô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 lambdaownerProducer
tuỳ chỉnh với hàm lườiby viewModels()
, thì hàm lười đó sẽ sử dụngdefaultViewModelProviderFactory
từ chủ sở hữu đó nếuViewModelProvider.Factory
tuỳ 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
ViewModel
lầ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
FragmentContainerView
khô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
ownerProducer
tuỳ chỉnh với hàm lazyby viewModels()
, thì hàm lazy đó sẽ sử dụngdefaultViewModelProviderFactory
từ chủ sở hữu đó nếuViewModelProvider.Factory
tuỳ 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
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ậpFragmentStrictMode.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ênFragmentManager
thông qua phương thứcsetStrictModePolicy()
mới. Chính sách đó áp dụng choFragmentManager
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ọ. Xem StrictMode cho Fragment. FragmentContainerView
hiệ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>().navController
Giờ đây,
FragmentScenario
triển khaiCloseable
, cho phép bạn sử dụng nó với phương thứcuse
củ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ểViewModel
nà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
FragmentManager
khô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,
DialogFragment
sử 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ộtFragment
trong 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
FragmentAddMenuProvider
cho việc sử dụng Vòng đời Fragment vào Vòng đời của chế độ xem Fragment khi sử dụng APIaddMenuProvider
củ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
,requestPermissions
và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ảFragment
và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àmgetFragment
sẽ 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
IllegalStateException
trong khi khôi phụcFragmentTransaction
hoặ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
FragmentManager
giữ 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ủaDialogFragment
khô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ànhGONE
khi sử dụnghide()
khi chế độ xem gốc đã được đặttransitionGroup=”true”
. (aosp/1766655, b/193603427) - Từ Fragment
1.3.6
: Giờ đây,FragmentActivity
sẽ 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,
FragmentManager
sử dụngSavedStateRegistry
trong 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 đểFragmentHostCallbacks
triể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ạyFragmentTransaction
sử dụngreplace()
vào cùng thời điểm đó. (I73137) - Sửa lỗi
NullPointerException
xả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
FragmentManager
tiế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)FragmentTagUsageViolation
hiệ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,
WrongFragmentContainerViolation
có 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
TargetFragmentUsageViolation
sẽ 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
RetainInstanceUsageViolation
hiệ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,
FragmentReuseViolation
có 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,
SetUserVisibleHintViolation
hiệ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
fitsSystemWindows
trê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.4
bở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 quatransitionName
hoặcbackground
) và các thành phần chung sẽ không còn gửiIndexOutOfBoundsException
nữa. (I16484, b/188679569, b/188969304) FragmentManager
sẽ 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
OnCreateDialogIncorrectCallback
sẽ 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,
FragmentStrictMode
sẽ 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,
FragmentStrictMode
hỗ trợ việc miễn trừ lớpFragment
cụ 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
FragmentStrictMode
Violation
đã đượ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ỗiViolation
chứa nội dung sau:- Giờ đây,
WrongFragmentContainerViolation
chứaViewGroup
màFragment
đang cố thêm vào. (I83c75, b/187871150) TargetFragmentUsageViolation
đã mở rộng sangSetTargetFragmentUsageViolation
,GetTargetFragmentUsageViolation
vàGetTargetFragmentRequestCodeUsageViolation
, vớiSetTargetFragmentUsageViolation
chứa đoạn mảnh mục tiêu và mã yêu cầu. (I741b4, b/187871150)- Giờ đây,
SetUserVisibleHintViolation
chứa giá trị boolean được chuyển vàosetUserVisibleHint()
. (I00585, b/187871150) - Giờ đây,
FragmentTagUsageViolation
chứa ViewGroup mà thẻ<fragment>
đang cố gắng tăng cường một mảnh lên.(I5dbbc, b/187871150) - Giờ đây,
FragmentReuseViolation
chứ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,
RetainInstanceUsageViolation
là lớp trừu tượng và có 2 lớp con làSetRetainInstanceUsageViolation
và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,
FragmentContainerView
sẽ gửi một ngoại lệ khi tìm cách thay đổi thuộc tínhfitsSystemWindow
theo 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
FragmentContainerView
hiệ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>().navController
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. (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ểViewModel
nà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
FragmentManager
khô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àoFragmentManager
hay 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ểFragment
sau 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ụngFragmentContainerView
khi 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ụngFragmentContainerView
là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,
FragmentScenario
triển khaiCloseable
, cho phép bạn sử dụng nó với phương thứcuse
củ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
UseGetLayoutInflater
sẽ 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
DialogFragmentCallbacksDetector
cảnh báo khi gọisetOnCancelListener
hoặcsetOnDismissListener
trong phương thứconCreateDialog()
củaDialogFragment
– những trình nghe này thuộc sở hữu củaDialogFragment
và 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.3
khi sử dụng APIViewTreeViewModelStoreOwner.get()
vớiViewModelProvider
hoặ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.Factory
do Fragment của bạn cung cấp nếu ghi đègetDefaultViewModelProviderFactory()
(như@AndroidEntryPoint
Fragment đượ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
FragmentContainerView
trê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ểBottomNavigationBar
và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
transitionGroup
thà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
FragmentScenario
triển khaiCloseable
. (#121, b/143774122) - Cảm ơn simonschiller đã thêm toàn bộ API
FragmentStrictMode
cho 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
:FragmentManager
sẽ 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
GONE
khi sử dụnghide()
khi chế độ xem gốc đã được đặttransitionGroup=”true”
. (aosp/1766655, b/193603427) - Giờ đây,
FragmentActivity
sẽ 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.4
bở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 quatransitionName
hoặcbackground
) và các thành phần chung sẽ không còn gửiIndexOutOfBoundsException
nữ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.3
khi sử dụng APIViewTreeViewModelStoreOwner.get()
vớiViewModelProvider
hoặ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.Factory
do Fragment của bạn cung cấp nếu ghi đègetDefaultViewModelProviderFactory()
(như@AndroidEntryPoint
Fragment đượ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
FragmentContainerView
trê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ểBottomNavigationBar
và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
transitionGroup
thà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
SavedStateViewModelFactory
hiệ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.2
khiến ảnh độngpopEnter
không chạy khi hiển thịFragmentTransaction
bao gồm một thao tácsetPrimaryNavFragment
như các lệnh đượcNavHostFragment
sử dụng. (I38c87, b/183877426) - Giờ đây,
FragmentContainerView
đảm bảo rằng mỗiFragment
sẽ được gửi một tập hợpWindowInsets
mớ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,
DialogFragment
xử 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ớpDialog
tuỳ 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ưBottomSheetDialog
sử 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
InvalidFragmentVersionForActivityResult
củ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
DialogFragment
có 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ụngDialogFragment
vớiComposeView
. (Ib9290, b/180691023)
Sửa lỗi
- Giờ đây, Mảnh được tăng cường vào hoạt động
RESUMED
trướ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
setFragmentResult
và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
onCreateOptionsMenu
khi 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
ActivityResultRegistry
có 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
FragmentActivity
trước. Bạn phải nâng cấp lên Fragment 1.3.0 để sử dụng Activity Result API trongFragmentActivity
hoặ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ênFragmentActivity
vàFragment
.FragmentOnAttachListener
mớ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ớpFragmentScenario
từ 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,
FragmentScenario
sử 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,
FragmentScenario
hỗ trợ đặtLifecycle.State
ban đầu để hỗ trợ xác nhận trạng thái của mảnh trước khi chuyển sang từngLifecycle.State
lần đầu tiên. - Hiện có một phương án thay thế cho API
FragmentScenario
củaonFragment
ở dạng phương thức tiện ích mở rộng được sửa đổi KotlinwithFragment
mà 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,Fragment
hỗ trợ các APIViewTreeLifecycleOwner.get(View)
,ViewTreeViewModelStoreOwner.get(View)
vàViewTreeSavedStateRegistryOwner
mà bạn đã thêm vào Vòng đời2.3.0
và SavedState1.1.0
sao cho chế độ này sẽ trả về Mảnh dưới dạngViewModelStoreOwner
, cũng nhưSavedStateRegistryOwner
vàLifecycleOwner
gắn với Vòng đời khung hiển thị của mảnh khi sử dụngView
trong 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_CLOSE
vàTRANSIT_FRAGMENT_FADE
hiện sử dụngAnimator
thay 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ủaViewModel
và 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ớpFragmentPagerAdapter
và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
DialogFragment
mẹ sẽ xuất hiện trênDialogFragment
con 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
hide
vớiAnimation
sẽ 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
Lifecycle
xử 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
Animator
sẽ 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ó
Animation
và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
class
hoặcandroid:name
bê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
DESTROYED
sẽ gửi mộtIllegalArgumentException
(Ie7651, b/170765622) - Giờ đây, việc khởi động FragmentScenario có trạng thái
DESTROYED
sẽ 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
Animator
hoặ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ó
Animation
thoá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 đề
Animator
thoá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,
FragmentFactory
sẽ 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áiLifecycle
thànhINITIALIZING
miễ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()
đếnCREATED
hiệ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ó
FragmentManager
không rỗng, và các mảnh cóFragmentManager
khô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_CLOSE
vàTRANSIT_FRAGMENT_FADE
) sử dụngAnimator
thay 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
INVISIBLE
trướ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
Animators
hơnAnimations
, nên một mảnh có cả hai phần tử này sẽ chỉ chạyAnimator
và 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
Animation
sẽ ghi đè tất cả hiệu ứngTransition
, hoặcAnimator
vàTransition
trên một mảnh riêng lẻ sẽ đều chạy được. (b/149569323) - Giờ đây,
enterTransition
vàexitTranstion
trong 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
CREATED
mà thay vào đó, chuyển sangSTARTED
cùng với các mảnh khác. (b/129035555) - Khắc phục vấn đề về việc
FragmentManager
thự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,
FragmentManager
trả 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
Transition
và các thực thể AndroidXTransition
hiệ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ênActivityResultLauncher
trong 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,
FragmentActivity
sử dụng APIOnContextAvailableListener
trong 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ủaFragmentActivity
sẽ 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ịFragmentManager
ghi đè, 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,
FragmentScenario
hỗ trợ đặt trạng thái Vòng đời ban đầu làCREATED
,STARTED
hoặcRESUMED
thay 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
FragmentScenario
củ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,
FragmentScenario
sử 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
đượcViewTreeSavedStateRegistryOwner
trả 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
clearFragmentResultListener
sẽ 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ênFragmentActivity
vàFragment
.FragmentOnAttachListener
mớ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
DialogFragment
hiển thị mộtDialogFragment
khá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
UseRequireInsteadOfGet
khô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ợ
ViewTreeViewModelStoreOwner
từ Lifecycle2.3.0-alpha03
vàViewTreeSavedStateRegistryOwner
từ SavedState1.1.0-alpha01
khi sử dụngView
trong mộtFragment
. (aosp/1297993, aosp/1300264)
Các thay đổi về API
- Giờ đây, các API
setFragmentResult()
vàsetFragmentResultListener()
sẽ lấyBundle
vàFragmentResultListener
khô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ênFragment
sử 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ụngFragmentFactory
mặ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
illegalStateException
khi thêm một mảnh vào hệ phân cấp chế độ xem củaDialogFragment
vớ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
prepareCall
trênFragment
làfinal
. (b/152439361)
Sửa lỗi
- Khắc phục lỗi hồi quy trong Fragment
1.3.0-alpha02
khi sử dụngBottomSheetDialogFragment
. (b/151652127, aosp/1263328, aosp/1265163) - Khắc phục vấn đề khi sử dụng
prepareCall
từ 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áFragmentLiveDataObserve
quy tắc tìm lỗi mã nguồn trên các lớpDialogFragment
vì vòng đời và vòng đời của chế độ xem luôn đồng bộ hoá, giúp sử dụngthis
hoặcviewLifecycleOwner
khi 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
ActivityResultRegistry
có 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,
DialogFragment
cung cấp một hàm khởi tạo có@LayoutRes
cho 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ìLifeCycleObserver
phải được đăng ký trênLifecycle
củ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ỗiDialogFragment
gây raStackOverflowError
khi 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 traUseRequireInsteadOfGet
Tì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
:FragmentContainerView
không còn gửiUnsupportedOperationException
do 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
BottomSheetDialogFragment
khô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ềviewLifecycleOwner
của Mảnh dưới dạngLifecycleOwner
cho 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ủaViewModel
và 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ớpFragmentPagerAdapter
vàFragmentStatePagerAdapter
dù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
Fragment
mặ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.2
khô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) FragmentContainerView
không còn gửiUnsupportedOperationException
khi 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
FragmentLiveDataObserve
trên các lớpDialogFragment
vì vòng đời và vòng đời của khung hiển thị luôn đồng bộ hoá, giúp sử dụngthis
hoặcviewLifecycleOwner
khi 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
DialogFragment
gây raStackOverflowError
khi 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
UseRequireInsteadOfGet
khi sử dụng tên biến cục bộ đã ẩn tên thuộc tính Kotlin. (b/149891163) FragmentContainerView
không còn gửiUnsupportedOperationException
vì 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
viewLifecycleOwner
làmLifecycleOwner
để gọi tớiOnBackPressedDispatcher
trongonCreateView()
,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
debugImplementation
khi 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ảget
vàrequire
tươ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
viewLifecycleOwner
khi dùngobserve
để xử lý cả phiên bản phương thức mở rộnglivedata-ktx
củ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
add
vàreplace
sử 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) FragmentStatePagerAdapter
vàFragmentPagerAdapter
không còn phát hiện các ngoại lệ doFragmentManager
gử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ảnFragmentManager
không còn gửiNullPointerException
khi Hoạt động đã bị huỷ. (b/148189412)
Thay đổi về phần phụ thuộc
- Các mảnh
1.2.1
hiệ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:
FragmentContainerView
là 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ụngFrameLayout
hoặc các bố cục khác. Mã này cũng hỗ trợclass
,android:name
tương tự vàandroid:tag
không bắt buộc như thẻ<fragment>
, nhưng sử dụngFragmentTransaction
thô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.0
Chuyể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àBundle
không bắt buộc của đối số. Các phương thức này sử dụngFragmentFactory
củ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:
SavedStateViewModelFactory
hiệ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ạoViewModelProvider
hoặ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átLiveData
từ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ềFragmentManager
khô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.enableDebugLogging
tĩ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ýDEBUG
hoặcVERBOSE
mà 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
class
hoặcandroid:name
trênFragmentContainerView
sẽ 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
NavHostFragment
bằngclass
hoặcandroid:name
trong 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-rc04
Mả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 sangCREATED
ngay 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_CLOSE
và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à
INVISIBLE
sau 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 đặtFragmentFactory
cũ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-rc03
Lifecycle ViewModel SavedState1.0.0-rc03
và 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átLiveData
từ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 KotlinviewLifecycleOwner
thay 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,
FragmentContainerView
hỗ trợ thuộc tínhclass
ngoà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átLiveData
từonCreateView()
,onViewCreated()
hoặconActivityCreated()
. (b/137122478)
Sửa lỗi
- Giờ đây, lệnh gọi lại
onDismiss
vàonCancel
trê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) FragmentContainerView
hiện thêm Mảnh màclass
hoặcandroid:name
xá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
IllegalStateException
trongFragmentContainerView
do trạng thái đang được lưu. (b/142580713) - Sửa
UnsupportedOperationException
trongFragmentContainerView
khi lớpFragmentContainerView
bị 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
class
hoặcandroid:name
trênFragmentContainerView
sẽ 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 sangFragmentContainerView
cho đế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
FragmentContainerView
bổ 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:name
vàandroid:tag
không bắt buộc. Không giống như thẻ<fragment>
,FragmentContainerView
sử dụng mộtFragmentTransaction
bình thường nâng cao để thêm Mảnh ban đầu, cho phépFragmentTransaction
thực hiện các thao tác khác trênFragmentContainerView
và 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
ClassCastException
khi 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.transition
chuyể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-alpha02
lầ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.transition
trướ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.transition
trê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-testing
phụ 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.w
trong 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ềFragmentManager
khô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.enableDebugLogging
tĩ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ýDEBUG
hoặcVERBOSE
mà 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
FragmentContainerView
hiệ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
SavedStateViewModelFactory
hiệ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ạoViewModelProvider
hoặ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_FADE
vớisetTransition
trê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
FragmentContainerView
là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àoFragmentTransaction
thực hiệnClass<? extends Fragment>
vàBundle
không bắt buộc của đối số. Các phương thức này sử dụngFragmentFactory
củ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
@MainThread
và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
FragmentTransaction
vàFragmentManager.BackStackEntry
. (b/138252944) - Phương thức
setTransitionStyle
trênFragmentTransaction
không còn được dùng nữa. (aosp/1011537) - Nhiều phương thức trong
FragmentManager
không còn làabstract
. Bản thânFragmentManager
vẫn làabstract
và 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ố trongFragmentPagerAdapter
vàFragmentStatePagerAdapter
khi 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
NullPointerException
khi 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
IllegalStateException
khi sử dụngFragmentPagerAdapter
vàFragmentStatePagerAdapter
trong 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
NullPointerException
khi bật lênFragmentTransaction
sử 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-testing
cung 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
FragmentFactory
trê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-ktx
hiệ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.FragmentPagerAdapter
vàFragmentStatePagerAdapter
có 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
FragmentActivity
trong hàm khởi tạo trênFragmentActivity
lấ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
Fragment
trong hàm khởi tạo trênFragment
lấ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
FragmentPagerAdapter
vàFragmentStatePagerAdapter
khi 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
NullPointerException
khi bật lênFragmentTransaction
sử 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
,STOPPED
và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
FragmentFactory
vàinstantiate
khô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_FRAGMENT
vàUSE_SET_USER_VISIBLE_HINT
trongFragmentPagerAdapter
vàFragmentStatePagerAdapter
lần lượt được đổi tên thànhBEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
và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.FragmentPagerAdapter
vàFragmentStatePagerAdapter
có 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ênFragmentScenario
trê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ạocontentLayoutId
củaFragmentActivity
hoặ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
CREATED
sau 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
restoreSaveState
do 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ếuFragmentManager
có 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_HARDWARE
cho ả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,
Fragment
vàFragmentActivity
chứa một hàm khởi tạo thứ hai nhận@LayoutRes int
thay 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
instantiate
củ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ớiinstantiate
mà 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
@ContentView
trê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
@ContentView
hiệ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ửiIllegalStateException
thay vì tắt tiếng không thành công (aosp/904301)
Sửa lỗi
onNewIntent
choFragmentActivity
hiện được đánh dấu chính xác là@CallSuper
(b/124120586)- Khắc phục vấn đề trong đó
onDismiss()
củaDialogFragment
có 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-testing
hiện phụ thuộc vàoandroidx.test:core-ktx
1.1.0 ổn định (b/121209673)- Giờ đây, bạn có thể sử dụng
openActionBarOverflowOrOptionsMenu
vớ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 Bundle
hoặ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
null
chosetTargetFragment()
. (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
BundleSavedStateRegistryOwner
và 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 viewModels
Kotlin để 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ặcViewModelStoreOwner
tuỳ chỉnh khác có mã nhưval viewModel: MyViewModel by viewModels(::requireParentFragment)
[b/119050253]
Thay đổi về API
FragmentScenario
hiệ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 View
hoặc gửiIllegalStateException
[b/120241368] - Thêm phương thức
requireParentFragment()
trả về một@NonNull Fragment
hoặ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
Bundle
có 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
Lifecycle
củ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
FragmentFactory
trên bất kỳFragmentManager
nà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-testing
phụ thuộc vàoandroidx.test:core:1.0.0-beta01
thay vìandroidx.test:core:1.0.0
chính xác.