Di chuyển
androidx.navigation
androidx.navigation.compose
androidx.navigation.dynamicfeatures
androidx.navigation.dynamicfeatures.fragment
androidx.navigation.dynamicfeatures.fragment.ui
androidx.navigation.fragment
androidx.navigation.fragment.compose
androidx.navigation.testing
androidx.navigation.ui
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 7 năm 2025 | 2.9.3 | - | - | - |
Khai báo phần phụ thuộc
Để thêm một phần phụ thuộc vào Navigation, bạn phải thêm kho lưu trữ Google Maven vào dự án. Hãy đọc nội dung Kho lưu trữ Maven của Google để biết thêm thông tin.
Thêm phần phụ thuộc cho cấu phần mềm bạn cần trong tệp build.gradle
cho ứng dụng hoặc mô-đun:
Groovy
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments id 'org.jetbrains.kotlin.plugin.serialization' version '2.0.21' } dependencies { def nav_version = "2.9.3" // Jetpack Compose Integration implementation "androidx.navigation:navigation-compose:$nav_version" // Views/Fragments Integration implementation "androidx.navigation:navigation-fragment:$nav_version" implementation "androidx.navigation:navigation-ui:$nav_version" // Feature module support for Fragments implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version" // Testing Navigation androidTestImplementation "androidx.navigation:navigation-testing:$nav_version" // JSON serialization library, works with the Kotlin serialization plugin. implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3" }
Kotlin
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments kotlin("plugin.serialization") version "2.0.21" } dependencies { val nav_version = "2.9.3" // Jetpack Compose integration implementation("androidx.navigation:navigation-compose:$nav_version") // Views/Fragments integration implementation("androidx.navigation:navigation-fragment:$nav_version") implementation("androidx.navigation:navigation-ui:$nav_version") // Feature module support for Fragments implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version") // Testing Navigation androidTestImplementation("androidx.navigation:navigation-testing:$nav_version") // JSON serialization library, works with the Kotlin serialization plugin implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3") }
Safe Args
Để thêm Safe Args vào dự án, hãy đưa classpath
sau vào tệp build.gradle
cấp cao nhất của bạn:
Groovy
buildscript { repositories { google() } dependencies { def nav_version = "2.9.3" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.9.3" classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version") } }
Bạn cũng phải áp dụng 1 trong 2 trình bổ trợ có sẵn.
Để tạo mã ngôn ngữ Java phù hợp với mô-đun Java và Kotlin, hãy thêm dòng này vào tệp build.gradle
của ứng dụng hoặc mô-đun:
Groovy
plugins { id 'androidx.navigation.safeargs' }
Kotlin
plugins { id("androidx.navigation.safeargs") }
Ngoài ra, để tạo mã Kotlin phù hợp với các mô-đun chỉ Kotlin, hãy thêm:
Groovy
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
Bạn phải có android.useAndroidX=true
trong
tệp gradle.properties
theo hướng dẫn
Di chuyển sang AndroidX.
Để biết thông tin về cách sử dụng các phần mở rộng Kotlin, hãy xem tài liệu ktx.
Để biết thêm thông tin về các phần phụ thuộc, hãy xem nội dung Thêm phần phụ thuộc cho 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 2.9
Phiên bản 2.9.3
Ngày 30 tháng 7 năm 2025
Phát hành androidx.navigation:navigation-*:2.9.3
. Phiên bản 2.9.3 bao gồm các thay đổi sau.
Sửa lỗi
- Đã khắc phục lỗi trong
NavController
gây raConcurrentModificationException
khi sử dụngOnDestinationChangedListeners
. (If7406, b/417784831) - Khắc phục lỗi khi sử dụng
navigate(uri, navOptions,navigationExtras)
, trong đó các phần bổ sung bị bỏ qua. (I67fb7, b/430336813)
Phiên bản 2.9.2
Ngày 16 tháng 7 năm 2025
Phát hành androidx.navigation:navigation-*:2.9.2
. Phiên bản 2.9.2 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục vấn đề mục không tiếp tục khi hộp thoại phía trên mục bị đóng (Idb20e, b/418746335)
- Đã khắc phục lỗi
MissingFieldException
khi kiểm thửSavedStateHandle
bằng các tuyến an toàn về kiểu trong khi sử dụngNavTypes
tuỳ chỉnh. (I2f843, b/421002511)
Phiên bản 2.9.1
Ngày 2 tháng 7 năm 2025
Phát hành androidx.navigation:navigation-*:2.9.1
. Phiên bản 2.9.1 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục một vấn đề khiến
NavEntries
được khởi tạo bằng một đỉnh duy nhất không bao giờ vượt quá CREATED trongLifecycle.State
. (I043ba, b/421095236)
Phiên bản 2.9.0
Ngày 7 tháng 5 năm 2025
Phát hành androidx.navigation:navigation-*:2.9.0
. Phiên bản 2.9.0 bao gồm các thay đổi sau.
Các thay đổi quan trọng kể từ phiên bản 2.8.0
- Giờ đây, các thao tác Điều hướng Safe Args được tạo bằng chú thích
@CheckResult
để đảm bảo các thao tác này được dùng.
Giao diện SupportingPane
- Giờ đây, Trình điều hướng tuỳ chỉnh có thể đánh dấu các đích đến của mình là triển khai giao diện
SupportingPane
. Giao diện này cho biết vớiNavController
rằng các đích đến này sẽ xuất hiện cùng với các đích đến khác. Bằng cách sử dụng giao diện này, bạn có thểRESUMED
nhiều đích đến cùng một lúc, chẳng hạn như.
Compose Kotlin Multiplatform
- Giờ đây, Navigation cung cấp một hàm
NavController.handleDeepLink()
chung mới nhậnNavDeepLinkRequest
thay vìIntent
. Điều này cho phép các nền tảng không phải Android xử lý đúng cách các đường liên kết sâu. Cảm ơn Konstantin Tskhovrebov! - Navigation hiện cung cấp
NavUri
, một hàm phân tích cú pháp chung mới, là API tương thích cho URI của Android trên các nền tảng khác. Điều này giúp bạn có thể tạo URI theo cách không phân biệt nền tảng. Cảm ơn Konstantin Tskhovrebov!
Hàm an toàn về kiểu
- Các API an toàn về kiểu mà trước đây chỉ có thể truy cập thông qua các phương thức
reified
, tức làcomposable<YourScreen>
hiện có các phiên bản không được cụ thể hoá trực tiếp lấy một thực thểKClass
. - Tính an toàn về kiểu điều hướng hiện hỗ trợ các lớp giá trị dưới dạng một tuyến đường hoặc dưới dạng loại đối số của một tuyến đường.
Phiên bản 2.9.0-rc01
Ngày 23 tháng 4 năm 2025
Phát hành androidx.navigation:navigation-*:2.9.0-rc01
. Phiên bản 2.9.0-rc01 bao gồm các thay đổi sau.
Sửa lỗi
- Xoá tất cả các mục tiêu không phải nền tảng Android khỏi Jetpack Navigation vì những mục tiêu đó không thực sự hoạt động. Giờ đây, các phần giữ chỗ cho nhiều nền tảng sẽ được cung cấp.(I2877d)
Phiên bản 2.9.0-beta01
Ngày 9 tháng 4 năm 2025
Phát hành androidx.navigation:navigation-*:2.9.0-beta01
. Phiên bản 2.9.0-beta01 bao gồm các thay đổi sau.
Thay đổi về API
- API chung của
parseStringAsNavUri
đã được thay đổi thành một hàm trả về một đối tượngNavUri
nhận một chuỗi. (I4db6e, b/403616316)
Thông tin cập nhật về phần phụ thuộc
- Thư viện này hiện hướng đến cấp độ ngôn ngữ Kotlin 2.0 và yêu cầu KGP 2.0.0 trở lên. (Idb6b5)
Phiên bản 2.9.0-alpha09
Ngày 26 tháng 3 năm 2025
Phát hành androidx.navigation:navigation-*:2.9.0-alpha09
. Phiên bản 2.9.0-alpha09 bao gồm các thay đổi sau.
Tính năng mới
- Giờ đây, mô-đun
navigation-testing
hỗ trợ trên máy tính, Linux, macOS và iOS ngoài Android. (I2b770, b/398265336) NavType
hiện được hỗ trợ trên máy tính, Linux, macOS và iOS, ngoài Android. (I297d8)
Phiên bản 2.9.0-alpha08
Ngày 12 tháng 3 năm 2025
Phát hành androidx.navigation:navigation-*:2.9.0-alpha08
. Phiên bản 2.9.0-alpha08 bao gồm các thay đổi sau.
Sửa lỗi
- Trong phiên bản Navigation
2.8.9
: Khắc phục một lỗi hồi quy trong Navigation 2.8.8. Lỗi này yêu cầu đường liên kết sâu phải khớp chính xác với tất cả các trường của yêu cầu hoặc ý định về đường liên kết sâu thì mới được coi là khớp. Điều này khiến những đường liên kết sâu chứa các trường khớp một phần và không có các trường khác không còn hoạt động nữa. (Ie5e36, b/399826566)
Đóng góp bên ngoài
- Hàm trình phân tích cú pháp chung mới để tạo một
NavUri
. Cảm ơn Konstantin Tskhovrebov! (If0a6a)
Phiên bản 2.9.0-alpha07
Ngày 26 tháng 2 năm 2025
Phát hành androidx.navigation:navigation-*:2.9.0-alpha07
. Phiên bản 2.9.0-alpha07 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục vấn đề khi cố gắng
saveState
bằng thao tác bật lên không bao gồm sẽ dẫn đến savedState rỗng, có thể gây ra sự cố khi khôi phục. (I9f3e8, b/395091644) - Trong phiên bản Navigation 2.8.8: Đã khắc phục vấn đề khớp
NavDeepLink
, trong đó một đường liên kết sâu và một yêu cầu đường liên kết sâu phải khớp chính xác về uri, thao tác và mime. Bạn không được phép so khớp nếu chỉ có một hoặc hai trường khớp. (I3b029, b/395712033) - Trong phiên bản Navigation 2.8.8: Khắc phục lỗi trong đó các tuyến đường có đường dẫn ký tự đại diện không khớp với một đường liên kết sâu đã thêm (I7ea92, b/389970341)
Đóng góp bên ngoài
- Trích xuất các API navigation-common, navigation-runtime và navigation-compose sang nền tảng chung. Cảm ơn Konstantin Tskhovrebov! (I1e626, Ica76f, Idf479)
Lỗi đã biết
- Do công việc giải quyết b/395712033, đường liên kết sâu được yêu cầu không chính xác phải có tất cả các trường giống như yêu cầu đường liên kết sâu và/hoặc
Intent
. Đường liên kết sâu chỉ cần khớp với các trường mà chúng có và các trường không được đưa vào sẽ bị bỏ qua. Vấn đề này đã được khắc phục trong một bản phát hành sau này trong b/399826566.
Phiên bản 2.9.0-alpha06
Ngày 12 tháng 2 năm 2025
Phát hành androidx.navigation:navigation-*:2.9.0-alpha06
. Phiên bản 2.9.0-alpha06 bao gồm các thay đổi sau.
Tính năng mới
- Giờ đây, các thao tác Điều hướng Safe Args được tạo bằng chú thích
@CheckResult
để đảm bảo các thao tác này được dùng. (I14d4c, b/356323084)
Sửa lỗi
- Khắc phục lỗi trong
NavController
khi các trạng thái backStack được khôi phục không chính xác vào một mảng khi chúng được lưu vào một danh sách. (Idfb9b) - Từ phiên bản Navigation
2.8.7
: Trình bổ trợ Navigation Safe Args hiện hỗ trợ các đích đến có thể kết hợp. (I35320, b/362791955)
Phiên bản 2.9.0-alpha05
Ngày 29 tháng 1 năm 2025
Phát hành androidx.navigation:navigation-*:2.9.0-alpha05
. Phiên bản 2.9.0-alpha05 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục vấn đề gây ra ảnh động thu phóng không mong muốn khi sử dụng Navigation Compose. (I480f4, b/353294030)
- Từ Điều hướng
2.8.6
: Các nhãnNavDestination
được cung cấp thông qua XML sẽ được phân tích cú pháp thông quaNavType.get
để đảm bảo logicNavType
tuỳ chỉnh được tuân thủ. (I7ec2f, b/388100796) - Trên
2.8.6
điều hướng: Khi điều hướng đến hoạt động bằngdataPattern
,ActivityNavigator
giờ đây sẽ cố gắng mã hoá giá trị arg bằngNavType
của đối số. (I16376, b/383616432) - Từ Navigation
2.8.5
: Khắc phục một vấn đề gây ra ảnh động thu phóng không mong muốn khi sử dụng Navigation Compose và gọi hàm điều hướng trong cùng một khung hình mà ảnh động hiện tại đang kết thúc. (I26cb1, b/353294030)
Phiên bản 2.9.0-alpha04
Ngày 11 tháng 12 năm 2024
Phát hành androidx.navigation:navigation-*:2.9.0-alpha04
. Phiên bản 2.9.0-alpha04 bao gồm các thay đổi sau.
Tính năng mới
- Các API an toàn về kiểu mà trước đây chỉ có thể truy cập thông qua các phương thức
reified
, tức làcomposable<YourScreen>
hiện có các phiên bản không được cụ thể hoá trực tiếp lấy một thực thểKClass
.(Ia7eed, Id2879, Ibf244, I17d79, Id09d2, I54696, Ia47be, I93281, Ic1bf0, Iba4ee, If56a5, Icf969, I67644, I6f788, b/382094941, b/366291612, b/381938808)
Bảng dưới đây cung cấp các API KClass và được cụ thể hoá.
reified | KClass |
---|---|
composable<TestClass> { } |
composable(TestClass::class) { } |
navigation<NestedGraph>(startDestination = TestClass::class) |
navigation(route = NestedGraph::class, startDestination = TestClass::class) |
dialog<TestClass> {} |
dialog(TestClass::class) {} |
navDeepLink<TestClass>(baseUri) |
navDeepLink(TestClass::class, baseUri) |
NavDeepLink.Builder.setUriPattern<TestClass>(baseUri) |
NavDeepLink.Builder.setUriPattern(TestClass::class, baseUri) |
NavDestinationBuilder.deepLink<TestDeepLink>(baseUri) { } |
NavDestinationBuilder.deepLink(TestDeepLink::class, baseUri) { } |
navController.getBackStackEntry<TestClass>() |
navController.getBackStackEntry(TestClass::class) |
navController.popBackStack<TestClass>(true) |
navController.popBackStack(TestClass::class, true) |
navController.clearBackStack<TestClass>() |
navController.clearBackStack(TestClass::class) |
NavOptions.setPopUpTo<TestClass>() |
NavOptions.setPopUpTo(TestClass::class) |
navOptions { popUpTo<TestClass> {...} } |
navOptions { popUpTo(TestClass::class) {...} } |
NavGraph.setStartDestination<TestClass>() |
NavGraph.setStartDestination(TestClass::class) |
NavGraph.findNode<TestClass>() |
NavGraph.findNode(TestClass::class) |
backStackEntry.toRoute<TestClass>() |
backStackEntry.toRoute(TestClass::class) |
savedStateHandle.toRoute<TestClass>() |
savedStateHandle.toRoute(TestClass::class) |
Thay đổi về API
- Lớp nạp chồng
NavGraph.setStartDestination
dành riêng cho Kotlin để đảm bảo an toàn về kiểu bị ẩn khỏi các nguồn Java. (Ic640c, b/364634035)
Sửa lỗi
- Trên Navigation
2.8.5
: Khắc phục sự cố trong đóNavHost
có thể gửi một ngoại lệ bên trongPredictiveBackHandler
nếu ngăn xếp lui được đẩy xuống 1 mục và một thao tác quay lại hệ thống được kích hoạt trong cùng một khung hình. (I1a429, b/375343407) - Từ Navigation
2.8.5
: Đã khắc phụcNavDestination
NullPointerException
khi cập nhậtstartDestination
của biểu đồ. (I99421, b/361560785)
Đóng góp bên ngoài
- Từ phiên bản Navigation
2.8.5
: Chế độ an toàn về kiểu điều hướng hiện hỗ trợList<Enum>
làm loại đối số của một tuyến đường mà không yêu cầu bất kỳNavType
tuỳ chỉnh nào. Cảm ơn Csaba Kozák! (GH-725, b/375559962)
Phiên bản 2.9.0-alpha03
Ngày 13 tháng 11 năm 2024
Phát hành androidx.navigation:navigation-*:2.9.0-alpha03
. Phiên bản 2.9.0-alpha03 bao gồm các thay đổi sau.
Tính năng mới
- Tính an toàn về kiểu điều hướng hiện hỗ trợ các lớp giá trị dưới dạng một tuyến đường hoặc dưới dạng loại đối số của một tuyến đường. (I9344a, b/374347483)
Sửa lỗi
- Đã khắc phục một
ConcurrentModificationException
có thể xảy ra khi mộtLifecycleObserver
được đính kèm vào mộtNavBackStackEntry
kích hoạt thay đổi đối với ngăn xếp lùi khiLifecycleOwner
lưu trữ (chẳng hạn như Hoạt động hoặc Mảnh chứa) thay đổi trạng thái vòng đời. (Ia9494)
Phiên bản 2.9.0-alpha02
Ngày 30 tháng 10 năm 2024
Phát hành androidx.navigation:navigation-*:2.9.0-alpha02
. Phiên bản 2.9.0-alpha02 bao gồm các thay đổi sau.
Đóng góp bên ngoài
- Phương thức
NavController.handleDeepLink(request: NavDeepLinkRequest)
chung mới. Cảm ơn Konstantin Tskhovrebov! (I3e228)
Phiên bản 2.9.0-alpha01
Ngày 16 tháng 10 năm 2024
Phát hành androidx.navigation:navigation-*:2.9.0-alpha01
. Phiên bản 2.9.0-alpha01 bao gồm các thay đổi sau.
Tính năng mới
- Giờ đây, Trình điều hướng tuỳ chỉnh có thể đánh dấu các đích đến của mình là triển khai giao diện
SupportingPane
. Giao diện này cho biết vớiNavController
rằng các đích đến này sẽ xuất hiện cùng với các đích đến khác. Bằng cách sử dụng giao diện này, bạn có thểRESUMED
nhiều đích đến cùng một lúc, chẳng hạn như. (Id5559) - Từ Navigation
2.8.3
: Thêm các quy tắc kiểm tra tìm lỗi mã nguồn mới cho các mô-đunnavigation-common
,navigation-runtime
vànavigation-compose
để giúp xác định mọi tuyến an toàn về kiểu không được chú thích đúng bằng@Serializable
. Quy trình kiểm tra này được áp dụng cho tất cả các hàm mở rộngNavGraphBuilder
vàNavDeepLinkBuilder
. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816) - Từ Navigation
2.8.3
: Thêm các chế độ kiểm tra tìm lỗi mã nguồn mới cho các mô-đunnavigation-common
,navigation-runtime
vànavigation-compose
để giúp xác định mọi tuyến an toàn về kiểu có đối số Enum không được chú thích đúng bằng@Keep
. Quy trình kiểm tra này được áp dụng cho tất cả các hàm mở rộngNavGraphBuilder
vàNavDeepLinkBuilder
. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)
Thay đổi về hành vi
- Nếu bạn cố gắng sử dụng một
NavController
đã đượcDESTROYED
trước đó, thì sẽ xảy raIllegalStateException
. (I520da, b/369616172)
Sửa lỗi
- Cập nhật ngoại lệ không tìm thấy lớp Enum để đề xuất sử dụng chú thích
@Keep
trong trường hợp lớp Enum bị xoá trong các bản dựng được rút gọn. (I90e79, b/358137294)
Lỗi đã biết
- Có một vấn đề với các quy tắc tìm lỗi mã nguồn mới được thêm vào
Navigation 2.8.*
, gây ra lỗiObsolete custom lint check
khi cố gắng chạy tính năng tìm lỗi mã nguồn bằng Trình bổ trợ Android cho Gradle 8.4 trở lên. (b/368070326, b/371463741)
Phiên bản 2.8
Phiên bản 2.8.9
Ngày 12 tháng 3 năm 2025
Phát hành androidx.navigation:navigation-*:2.8.9
. Phiên bản 2.8.9 bao gồm các thay đổi sau.
Sửa lỗi
- Đã khắc phục một lỗi hồi quy trong Navigation 2.8.8. Lỗi này yêu cầu đường liên kết sâu phải khớp chính xác với tất cả các trường của yêu cầu hoặc ý định về đường liên kết sâu thì mới được coi là khớp. Điều này khiến những đường liên kết sâu chứa các trường khớp một phần và không có các trường khác không còn hoạt động nữa. (Ie5e36, b/399826566)
Phiên bản 2.8.8
Ngày 26 tháng 2 năm 2025
Phát hành androidx.navigation:navigation-*:2.8.8
. Phiên bản 2.8.8 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục lỗi trong đó các tuyến đường có đường dẫn ký tự đại diện không khớp với đường liên kết sâu đã thêm. (I7ea92, b/389970341)
- Đã khắc phục vấn đề về việc so khớp
NavDeepLink
, trong đó đường liên kết sâu và yêu cầu về đường liên kết sâu phải khớp chính xác về uri, thao tác và mime. Bạn không được phép so khớp nếu chỉ có một hoặc hai trường khớp. (I3227f, b/395712033)
Lỗi đã biết
- Do công việc giải quyết b/395712033, đường liên kết sâu được yêu cầu không chính xác phải có tất cả các trường giống như yêu cầu đường liên kết sâu và/hoặc
Intent
. Đường liên kết sâu chỉ cần khớp với các trường mà chúng có và các trường không được đưa vào sẽ bị bỏ qua. Vấn đề này đã được khắc phục trong một bản phát hành sau này trong b/399826566.
Phiên bản 2.8.7
Ngày 12 tháng 2 năm 2025
Phát hành androidx.navigation:navigation-*:2.8.7
. Phiên bản 2.8.7 bao gồm các thay đổi sau.
Sửa lỗi
- Giờ đây, Navigation Safe Args hỗ trợ các đích đến có thể kết hợp. (I35320, b/362791955)
Phiên bản 2.8.6
Ngày 29 tháng 1 năm 2025
Phát hành androidx.navigation:navigation-*:2.8.6
. Phiên bản 2.8.6 bao gồm các thay đổi sau.
Sửa lỗi
- Các nhãn
NavDestination
được cung cấp thông qua XML sẽ được phân tích cú pháp thông quaNavType.get
để đảm bảo logicNavType
tuỳ chỉnh được tuân thủ. (Id366d, b/388100796) - Khi điều hướng đến hoạt động bằng
dataPattern
,ActivityNavigator
giờ đây sẽ cố gắng mã hoá giá trị arg bằngNavType
của đối số. (I1a71d, b/383616432)
Phiên bản 2.8.5
Ngày 11 tháng 12 năm 2024
Phát hành androidx.navigation:navigation-*:2.8.5
. Phiên bản 2.8.5 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục vấn đề khi
NavHost
có thể gửi một ngoại lệ bên trongPredictiveBackHandler
nếu ngăn xếp lui được bật xuống 1 mục và một thao tác quay lại hệ thống được kích hoạt trong cùng một khung hình. (I1a429, b/375343407) - Khắc phục
NavDestination
NullPointerException
khi cập nhậtstartDestination
của biểu đồ. (I99421, b/361560785) - Khắc phục vấn đề gây ra ảnh động thu phóng không mong muốn khi sử dụng Navigation Compose và gọi thao tác điều hướng trong cùng một khung hình mà ảnh động hiện tại đang kết thúc. (I26cb1, b/353294030)
- Đã khắc phục một
ConcurrentModificationException
có thể xảy ra khi mộtLifecycleObserver
được đính kèm vào mộtNavBackStackEntry
kích hoạt thay đổi đối với ngăn xếp lùi khiLifecycleOwner
lưu trữ (chẳng hạn như Hoạt động hoặc Mảnh chứa) thay đổi trạng thái vòng đời. (Ia9494)
Đóng góp bên ngoài
- Tính năng an toàn về loại điều hướng hiện hỗ trợ
List<Enum>
làm loại đối số của một tuyến đường mà không yêu cầu bất kỳNavType
tuỳ chỉnh nào. Cảm ơn Csaba Kozák! (GH-725, b/375559962)
Phiên bản 2.8.4
Ngày 13 tháng 11 năm 2024
Phát hành androidx.navigation:navigation-*:2.8.4
. Phiên bản 2.8.4 bao gồm các thay đổi sau.
Tính năng mới
- Từ Navigation
2.9.0-alpha03
: Chế độ an toàn về kiểu điều hướng hiện hỗ trợ lớp giá trị dưới dạng tuyến đường hoặc dưới dạng kiểu đối số của một tuyến đường (I9344a, b/374347483)
Sửa lỗi
- Từ phiên bản Navigation
2.9.0-alpha01
: Giờ đây, nếu bạn cố gắng sử dụng mộtNavController
đã đượcDESTROYED
trước đó, thì sẽ xảy raIllegalStateException
. (I520da, b/369616172)
Phiên bản 2.8.3
Ngày 16 tháng 10 năm 2024
Phát hành androidx.navigation:navigation-*:2.8.3
. Phiên bản 2.8.3 bao gồm các thay đổi sau.
Tính năng mới
- Thêm các chế độ kiểm tra tìm lỗi mã nguồn mới cho các mô-đun
navigation-common
,navigation-runtime
vànavigation-compose
để giúp xác định mọi tuyến an toàn về kiểu không được chú thích đúng bằng@Serializable
. Quy trình kiểm tra này được áp dụng cho tất cả các hàm mở rộngNavGraphBuilder
vàNavDeepLinkBuilder
. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816) - Thêm các chế độ kiểm tra tìm lỗi mã nguồn mới cho các mô-đun
navigation-common
,navigation-runtime
vànavigation-compose
để giúp xác định mọi tuyến an toàn về kiểu có đối số Enum không được chú thích đúng bằng@Keep
. Quy trình kiểm tra này được áp dụng cho tất cả các hàm mở rộngNavGraphBuilder
vàNavDeepLinkBuilder
. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)
Sửa lỗi
- Khắc phục vấn đề trong đó các quy tắc tìm lỗi mã nguồn mới được thêm vào
Navigation 2.8.*
sẽ gây ra lỗiObsolete custom lint check
khi cố gắng chạy tính năng tìm lỗi mã nguồn bằng Trình bổ trợ Android cho Gradle 8.4 trở lên. (I1be3d, b/368070326, b/371463741)
Lỗi đã biết
- Lint điều hướng sẽ đưa ra lỗi kiểm tra lint tuỳ chỉnh không dùng nữa khi cố gắng chạy lint bằng Lint 16 (AGP 8.7) trở lên. (b/371926651)
Phiên bản 2.8.2
Ngày 2 tháng 10 năm 2024
Phát hành androidx.navigation:navigation-*:2.8.2
. Phiên bản 2.8.2 bao gồm các thay đổi sau.
Tính năng mới
- Tính năng An toàn về kiểu điều hướng hiện hỗ trợ các lớp có thể chuyển đổi tuần tự bao gồm
Double
,Double?
,DoubleArray
,DoubleArray?
,List<Double>
vàList<Double>?
mà không yêu cầu bất kỳNavType
tuỳ chỉnh nào. (I570eb, Ibc4c0, I37461, I5bed4, b/359245753)
Sửa lỗi
- Cải thiện thông báo lỗi khi Thao tác điều hướng không thể liên kết đối số của một tuyến với
NavType
, thông báo lỗi mới sẽ chứa tên đối số, tên đủ điều kiện của đối số và tên đủ điều kiện của tuyến. (Id8416, b/346264232)
Phiên bản 2.8.1
Ngày 18 tháng 9 năm 2024
Phát hành androidx.navigation:navigation-*:2.8.1
. Phiên bản 2.8.1 bao gồm các thay đổi sau.
Tính năng mới
- Thêm một quy tắc Lint (tìm lỗi mã nguồn) mới để đảm bảo việc sử dụng hàm
popBackStack
lấy một loại lớp được cụ thể hoá khi cố gắngpopBackStack
bằng cách sử dụng các API an toàn về kiểu. (Ief161, b/358095343)
Sửa lỗi
- Giờ đây, Navigation yêu cầu tuyến đường được truyền đến
startDestination
củaNavGraph
phải chứa các giá trị cho tất cả đối số bắt buộc, bao gồm cả những đối số không thể rỗng và không có giá trị mặc định. (I18e74, b/362594265) - Đối số an toàn của thành phần điều hướng đã thêm tính năng hỗ trợ cho các chuỗi không thể rỗng để các giá trị "null" sẽ được phân tích cú pháp và lưu trữ vào gói như hiện tại. Điều này khác với hành vi hiện tại là các giá trị "null" được phân tích cú pháp thành một đối tượng rỗng. Thay đổi này chỉ áp dụng cho các loại String không thể rỗng. Các chuỗi có thể rỗng vẫn giữ nguyên. (I08b4a, b/348936238)
- Không thể liên kết sâu vào một
NavDestination
nữa, trừ phi thông qua một đường liên kết sâu được thêm rõ ràng vào đích đến. Điều này cũng có nghĩa là bạn chỉ có thể chuyển đến tuyến đường của một đích đến bằng hàm điều hướng nạp chồng nhận một tuyến đường dạng chuỗi. Điều này khắc phục một lỗ hổng bảo mật cho phép liên kết sâu đến một đích đến có khả năng được bảo vệ. (Ie30e6)
Cập nhật về phần phụ thuộc
- Navigation Safe Args hiện phụ thuộc vào Kotlin 1.9.24 thay vì Kotlin 2.X, đảm bảo rằng nhà phát triển không bị buộc phải cập nhật. (a4129a)
- Navigation Compose hiện phụ thuộc vào Compose
1.7.2
.
Phiên bản 2.8.0
Ngày 4 tháng 9 năm 2024
Phát hành androidx.navigation:navigation-*:2.8.0
. Phiên bản 2.8.0 bao gồm các thay đổi sau.
Các thay đổi quan trọng kể từ phiên bản 2.7.0
Độ an toàn về kiểu của Kotlin DSL trong thành phần Điều hướng
- Giờ đây, thành phần Điều hướng cung cấp độ an toàn về kiểu cho Kotlin DSL (do Navigation Compose dùng) bằng cách sử dụng Kotlin Serialization để cho phép bạn xác định các đích đến trong biểu đồ điều hướng thông qua các đối tượng và lớp dữ liệu an toàn về kiểu:
// Define a home destination that doesn't take any arguments
@Serializable
object Home
// Define a profile destination that takes an ID
@Serializable
data class Profile(val id: String)
// Now define your NavHost using type safe objects
NavHost(navController, startDestination = Home) {
composable<Home> {
HomeScreen(onNavigateToProfile = { id ->
navController.navigate(Profile(id))
})
}
composable<Profile> { backStackEntry ->
val profile: Profile = backStackEntry.toRoute()
ProfileScreen(profile)
}
}
Hãy xem bài đăng trên blog Navigation Compose đáp ứng yêu cầu An toàn về kiểu để biết thêm thông tin.
Cử chỉ xem trước thao tác quay lại trong Navigation Compose
- Navigation Compose hiện hỗ trợ tính năng Xem trước thao tác quay lại trong ứng dụng thông qua các API
SeekableTransitionState
mới từ compose-animation. Nhờ đó, bạn có thể dùng cử chỉ quay lại để xem đích đến trước đó bằng hiệu ứng chuyển đổi tuỳ chỉnh trước khi quyết định xác nhận giao dịch thông qua cử chỉ hoàn tất hoặc huỷ.
Navigation Fragment Composable
- Thêm một cấu phần phần mềm
navigation-fragment-compose
mới bao gồm một lựa chọn thay thếComposableNavHostFragment
choNavHostFragment
, cho phép bạn thêm đích đến có thể kết hợp vào tệp XML điều hướng. Mỗi đích đếncomposable
phải được biểu thị dưới dạng một phương thức@Composable
cấp cao nhất, không có đối số. Tên đủ điều kiện của phương thức này được dùng làm thuộc tínhandroid:name
trên mỗi đích đến. Khi bạn di chuyển đến một trong những đích đến này, một mảnh chứa sẽ được tạo để hiển thị nội dung có thể kết hợp.
// In HomeScreen.kt
@Composable
fun HomeScreen() {
// Your Composable content here
}
// In your navigation.xml
<composable
android:id="@+id/home_screen"
android:name="com.example.HomeScreenKt\$HomeScreen" />
Các thay đổi khác
- Navigation Compose hiện phụ thuộc vào Compose 1.7.0.
- Navigation hiện cung cấp một lớp
CollectionNavType<T>
mới, một lớp con củaNavType<T>
cho các đối số dựa trên tập hợp, chẳng hạn như danh sách, mảng, bản đồ. Tất cả các mảngNavType
mặc định (IntArrayType
,LongArrayType
,FloatArrayType
,BoolArrayType
vàStringArrayType
) hiện đều kế thừa từ lớp mới này. NavType
hiện hỗ trợ sẵn Danh sách số nguyên, Chuỗi, Boolean, Số thực và Số dài.
Phiên bản 2.8.0-rc01
Ngày 21 tháng 8 năm 2024
Phát hành androidx.navigation:navigation-*:2.8.0-rc01
. Phiên bản 2.8.0-rc01 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục sự cố điều hướng khi truyền các lớp Enum cấp cao nhất làm đối số an toàn về kiểu. (I0ba76, b/358137294)
- Navigation 2.8 hiện hoạt động chính xác với SDK 34 và sẽ không chuyển sang SDK 35 cho đến khi phát hành phiên bản 2.9 cùng với các thư viện AndroidX khác. (b/358798728)
Phiên bản 2.8.0-beta07
Ngày 7 tháng 8 năm 2024
Phát hành androidx.navigation:navigation-*:2.8.0-beta07
. Phiên bản 2.8.0-beta07 bao gồm các thay đổi sau.
Lỗi đã biết
- Do b/358137294, chỉ các Enum lồng trong một lớp khác mới được hỗ trợ ngay từ đầu. Các Enum cấp cao nhất sẽ được hỗ trợ trong bản phát hành tiếp theo.
Sửa lỗi
- Khi điều hướng đến các đích đến trùng lặp hoặc được chia sẻ, tính năng điều hướng sẽ ưu tiên việc đi đến đích đến phù hợp gần nhất từ vị trí hiện tại trên biểu đồ. (Ic89a4, b/352006850)
- Thành phần điều hướng trong các đối số an toàn hiện đã thêm một
NavType.EnumType
mới. Điều này có nghĩa là các loạiEnum
không còn yêu cầuNavType
tuỳ chỉnh nữa. Lưu ý rằngSerialName
củaEnum
phải là tên đủ điều kiện mặc định. (I66d22, b/346475493) - Hoạt động điều hướng trong safe args đã thêm tính năng hỗ trợ tích hợp cho các loại đối số có thể rỗng,bao gồm
Int?
,Long?
,Float?
,Boolean?
vàEnum<*>?
. (I32d13,I1c580,Ifba66,I978b0,Ide076 , b/351994237) startDestination
củaNavGraph
hiện sẽ sử dụng các giá trị đối số mặc định nếu tuyến đườngstartDestination
được truyền đếnNavGraph
hoàn toàn bằng vớistartDestination.route
. (I13762, b/354046047)
Phiên bản 2.8.0-beta06
Ngày 24 tháng 7 năm 2024
Phát hành androidx.navigation:navigation-*:2.8.0-beta06
. Phiên bản 2.8.0-beta06 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục vấn đề trong đó các hoạt động kiểm tra tìm lỗi mã nguồn
WrongStartDestinationType
không kiểm tra các đối tượng Companion trên loại lớp được truyền vào, khiến lint không phát hiện được lỗi. (I92b09)
Phiên bản 2.8.0-beta05
Ngày 10 tháng 7 năm 2024
Phát hành androidx.navigation:navigation-*:2.8.0-beta05
. Phiên bản 2.8.0-beta05 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục sự cố điều hướng
singleTop
khiNavGraphs
lồng nhau dùng chung tuyến đườngstartDestination
. (I17b94, b/294408596)
Phiên bản 2.8.0-beta04
Ngày 26 tháng 6 năm 2024
Phát hành androidx.navigation:navigation-*:2.8.0-beta04
. Phiên bản 2.8.0-beta04 bao gồm các thay đổi sau.
Sửa lỗi
- Thành phần điều hướng hiện hỗ trợ việc điều hướng bằng các chuỗi trống trong đối số đường dẫn. (Ic5dbd, b/339481310)
- Cải thiện thông báo lỗi cho các trình chuyển đổi tuần tự tuỳ chỉnh được khai báo trực tiếp trên các trường lớp thông qua
@Serializable(with =...)
để làm rõ rằng đây hiện là một tính năng không được hỗ trợ. (I052b0, b/341319151) - Giờ đây, bạn có thể dùng API kiểm thử
SavedStateHandleFactory
trong các chương trình kiểm thử không phải Android, nhưng sẽ cần Robolectric hỗ trợ việc phân tích cú pháp đối số bằng Bundle. (I76cdc, b/340966212) - Khắc phục sự cố khi khôi phục trạng thái khi tiếp tục ứng dụng sau khi quá trình bị gián đoạn bằng cách sử dụng tính năng Điều hướng an toàn về loại trong Compose. (Ia8f38, b/341801005)
- Khắc phục một vấn đề trong Navigation Compose, trong đó sau khi huỷ Cử chỉ xem trước thao tác quay lại,
NavBackStackEntry
mà người dùng quay lại sẽ không bao giờ quay lại Trạng thái vòng đờiRESUMED
. Điều này cũng đảm bảo đích đến trả về sẽ có ảnh động chính xác thay vì chỉ xuất hiện ngay lập tức sau khi người dùng hất. (I97a0c, b/346608857) - Khi sử dụng tính năng Xem trước thao tác quay lại với Navigation Compose, đích đến được bật lên hiện sẽ có thứ tự z phù hợp, hoạt ảnh chính xác ở trên cùng của đích đến đến. (I2077b, b/345993681)
Phiên bản 2.8.0-beta03
Ngày 12 tháng 6 năm 2024
Phát hành androidx.navigation:navigation-*:2.8.0-beta03
. Phiên bản 2.8.0-beta03 bao gồm các thay đổi sau.
Thay đổi về API
CollectionNavType
có một phương thứcemptyCollection()
trừu tượng mới. Ghi đè phương thức này để xử lý một bộ sưu tập trống được truyền vào dưới dạng đối số. (Ie4d84, b/341723133)
Sửa lỗi
- Thêm tài liệu về
NavType.serializeAsValue
vàserializeAsValues
để làm nổi bật rằng đầu ra cuối cùng phải được mã hoá Uri. (Ida6bd, b/344943214) - Khắc phục sự cố khi gọi
toRoute<T>
bằng đối sốCollectionNavType
rỗng. Khi điều hướng bằngCollectionNavType
rỗng, đối số đầu ra sẽ là giá trị mặc định được khai báo trên lớp Serializable hoặc giá trị trả về củaemptyCollection()
nếu không có giá trị mặc định. (I84158, Id630f, b/342672856)
Phiên bản 2.8.0-beta02
Ngày 29 tháng 5 năm 2024
Phát hành androidx.navigation:navigation-*:2.8.0-beta02
. Phiên bản 2.8.0-beta02 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục sự cố
ClassCastException
khi sử dụngNavBackStackEntry.toRoute
vớiNavType
tuỳ chỉnh có thể rỗng. (I1c29b, b/342239473) - Đã khắc phục các vấn đề về khôi phục trạng thái ngăn xếp lui của Navigation khi tìm cách khôi phục một mục trong ngăn xếp lui không thể truy cập thông qua mã nhận dạng từ đích đến hiện tại. Vì các tuyến đường được hỗ trợ bằng mã nhận dạng, nên những đích đến được tạo bằng tuyến đường cũng bị ảnh hưởng. Điều này cũng khắc phục một sự cố do việc gọi
clearBackStack()
gây ra, có cùng vấn đề cơ bản. (I423c3, b/339908057)
Phiên bản 2.8.0-beta01
Ngày 14 tháng 5 năm 2024
Phát hành androidx.navigation:navigation-*:2.8.0-beta01
. Phiên bản 2.8.0-beta01 bao gồm các thay đổi sau.
Thay đổi về API
SavedStateHandle.toRoute()
hiện lấy tham sốtypeMap
cho các loại đối số tuỳ chỉnh. (Ie39fb, b/339026523)- Thêm một API kiểm thử vào
navigation-testing
để tạoSavedStateHandle
từ một đối tượng Kotlin Serializable. (Id4867, b/339080702)
Sửa lỗi
- Chúng tôi đã thêm tài liệu về thông số bị thiếu cho các hàm Navigation Kotlin DSL. (I26a36)
Phiên bản 2.8.0-alpha08
Ngày 1 tháng 5 năm 2024
Phát hành androidx.navigation:navigation-*:2.8.0-alpha08
. Phiên bản 2.8.0-alpha08 bao gồm các thay đổi sau.
Safe Args trong Navigation Compose
- Công việc hỗ trợ chế độ an toàn về kiểu trong thời gian biên dịch cho Navigation Compose và người dùng Navigation Kotlin DSL dựa trên Kotlin Serialization đã hoàn tất và các API thử nghiệm trước đây hiện đã ổn định. (Iea94d, I0eb0d, I873b7, I3a64b, I6c3a2, I11f0b, Ic3032, I8d394, I95710, Ice060, Id0e55, I45f8b, Idcdaf, If5380, I08b23, Ia5c59, b/188693139)
Chức năng này sử dụng Kotlin Serialization để cho phép bạn xác định đích đến trong biểu đồ điều hướng thông qua các đối tượng và lớp dữ liệu an toàn về kiểu:
// Define a home destination that doesn't take any arguments
@Serializable
object Home
// Define a profile destination that takes an ID
@Serializable
data class Profile(val id: String)
// Now define your NavHost using type safe objects
NavHost(navController, startDestination = Home) {
composable<Home> {
HomeScreen(onNavigateToProfile = { id ->
navController.navigate(Profile(id))
})
}
composable<Profile> { backStackEntry ->
val profile: Profile = backStackEntry.toRoute()
ProfileScreen(profile)
}
}
Hãy xem bài đăng trên blog Navigation Compose đáp ứng yêu cầu An toàn về kiểu để biết thêm thông tin.
Tính năng mới
- Cấu phần phần mềm
navigation-fragment-compose
hiện cung cấp một thành phần kết hợp cục bộLocalFragment
cho các phương thức có khả năng kết hợp trongComposableFragment
. (If35e5) NavType
hiện hỗ trợ sẵn Danh sách số nguyên, Chuỗi, Boolean, Số thực và Số dài. (I4b6dd, Ia914c, b/188693139)
Phiên bản 2.8.0-alpha07
Ngày 17 tháng 4 năm 2024
Phát hành androidx.navigation:navigation-*:2.8.0-alpha07
. Phiên bản 2.8.0-alpha07 bao gồm các thay đổi sau.
Tính năng mới
Thêm một cấu phần phần mềm
navigation-fragment-compose
mới bao gồm một lựa chọn thay thếComposableNavHostFragment
choNavHostFragment
, cho phép bạn thêm các đích đếncomposable
vào tệp XML điều hướng. Mỗi đích đếncomposable
phải được biểu thị dưới dạng một phương thức@Composable
cấp cao nhất, không có đối số. Tên đủ điều kiện của phương thức này được dùng làm thuộc tínhandroid:name
trên mỗi đích đến. Khi bạn di chuyển đến một trong những đích đến này, một mảnh chứa sẽ được tạo để hiển thị nội dung có thể kết hợp. (I0ef2e, b/265480755)// In HomeScreen.kt @Composable fun HomeScreen() { // Your Composable content here }
// In your navigation.xml <composable android:id="@+id/home_screen" android:name="com.example.HomeScreenKt\$HomeScreen" />
Thay đổi về API
- Tiếp tục hỗ trợ Safe Args trong Navigation Compose bằng cách sử dụng phương pháp dựa trên Kotlin Serialization. Các API này chưa hoàn tất và được đánh dấu bằng chú giải
ExperimentalSafeArgsApi
. Chú thích này sẽ bị xoá khi toàn bộ giao diện API hoàn tất trong một bản phát hành trong tương lai. (Iefd95, I409c8, I5b5ac, I7e753, I960f8, I3eabd, I8ed5a, Ied2c9, I9b73c, I554db, Ib3aba, Ia668d, b/188693139)
Phiên bản 2.8.0-alpha06
Ngày 3 tháng 4 năm 2024
Phát hành androidx.navigation:navigation-*:2.8.0-alpha06
. Phiên bản 2.8.0-alpha06 bao gồm các thay đổi sau.
Thay đổi về API
- Chúng tôi đã bắt đầu hỗ trợ Safe Args trong Navigation Compose bằng cách sử dụng một phương pháp dựa trên Kotlin Serialization. Các API này chưa hoàn tất và được đánh dấu bằng chú giải
ExperimentalSafeArgsApi
. Chú thích này sẽ bị xoá khi toàn bộ giao diện API hoàn tất trong một bản phát hành trong tương lai. (I644e7, I98896, I2a1c5, I43a51, I836a1, Ic5eec, I39407, I24e41, If9e14, Ibb13e, If44d3, Icb70f, I8972f, I1d432, Icf32b, I20a14, I262aa, I7de99, I35990, I1033d, b/188693139)
Sửa lỗi
NavHost
hiện dùngAlignment.TopStart
làm đối số contentAlignment mặc định. Điều này giúp hiệu ứng chuyển đổi này phù hợp với hiệu ứng mặc định choAnimatedContent
và khắc phục một số trường hợp có hiệu ứng chuyển đổi thu phóng từ tâm không mong muốn. (I09e72, b/330111602)- Khi bạn hất nhanh cử chỉ xem trước thao tác quay lại trong khi dùng Navigation Compose,
NavHost
hiện sẽ hoàn tất đúng cách hiệu ứng chuyển đổi tuỳ chỉnh thay vì kết thúc ngay lập tức. (I99017, b/327292110)
Phiên bản 2.8.0-alpha05
Ngày 20 tháng 3 năm 2024
Phát hành androidx.navigation:navigation-*:2.8.0-alpha05
. Phiên bản 2.8.0-alpha05 bao gồm các thay đổi sau.
Tính năng mới
- Giờ đây, bạn có thể truyền các đối số đến
NavGraph
'sstartDestination
ngay trong tuyến đườngstartDestination
mà không cần dựa vàodefaultValue
. Điều này cũng áp dụng choNavGraph
startDestinations
lồng nhau. (I0e0b5, b/109505019, b/188693139)
Thay đổi về API
- Đã thêm lớp
CollectionNavType<T>
trừu tượng mới, một lớp con củaNavType<T>
cho các đối số dựa trên tập hợp, chẳng hạn như danh sách, mảng, bản đồ. (Ic6d63, b/188693139) - Tất cả các mảng
NavType
mặc định (IntArrayType
,LongArrayType
,FloatArrayType
,BoolArrayType
vàStringArrayType
) hiện thuộc loạiCollectionNavType
(Idcf79, b/188693139) NavType
hiện cung cấp một APIvalueEquals
mở mới để xác định xem hai giá trị cùng loại có bằng nhau hay không. (I6cb97, b/327229511)
Sửa lỗi
- Các tham số truy vấn trong đường liên kết sâu hiện cho phép các giá trị ở dạng dấu ngoặc nhọn xung quanh tên đối số (tức là
{argName}
) làm giá trị hợp lệ choNavTypes
dựa trên chuỗi. Điều này khắc phục vấn đề khi giá trị như vậy sẽ được coi là không hợp lệ (hoặc không có giá trị) đối với tất cả các loại. (I18302, b/327274038) - Các hàm
NavController
hỗ trợ các tuyến nhưnavigate
hoặcpopBackStack
hiện có thể khớp đúng các tuyến được điền bằng các đối số của MảngNavTypes
. (Iea805, b/327229511)
Phiên bản 2.8.0-alpha04
Ngày 6 tháng 3 năm 2024
Phát hành androidx.navigation:navigation-*:2.8.0-alpha04
. Phiên bản 2.8.0-alpha04 bao gồm các thay đổi sau.
Tính năng mới
- Giờ đây, bạn có thể chỉ định
SizeTranform
cho các hiệu ứng chuyển đổi trong Navigation Compose bằng cách xác định chúng trong quá trình khởi chạy cho các hàmcomposable
và/hoặcnavigation
. (I91062, b/296912651)
Sửa lỗi
- Khắc phục vấn đề trong đó
NavHost
trong Compose Navigation không hiển thị đúng hiệu ứng chuyển đổi khi sử dụng thao tác Quay lại hệ thống mà không có cử chỉ. (Iceeae, b/325998468)
Phiên bản 2.8.0-alpha03
Ngày 21 tháng 2 năm 2024
Phát hành androidx.navigation:navigation-*:2.8.0-alpha03
. Phiên bản 2.8.0-alpha03 bao gồm các thay đổi sau.
Thay đổi về API
NavBackStackEntry.savedStateHandle
hiện được đánh dấu là@MainThread
vì nó sử dụng mã bắt buộc phải nằm trên luồng chính. (Ibb988, b/299523245)
Sửa lỗi
- Khắc phục một vấn đề trong Navigation khiến các ViewModel
NavGraph
đượcDESTROYED
quá sớm vìViewModel
của mục nhập được liên kết không thuộc trạng thái đã lưu. (Ib6bb7, b/317581849)
Cập nhật về phần phụ thuộc
- Navigation Compose hiện phụ thuộc vào Compose 1.7.0-alpha03.
Phiên bản 2.8.0-alpha02
Ngày 7 tháng 2 năm 2024
Phát hành androidx.navigation:navigation-*:2.8.0-alpha02
. Phiên bản 2.8.0-alpha02 bao gồm các thay đổi sau.
Tính năng mới
- Navigation Compose hiện hỗ trợ tính năng Xem trước thao tác quay lại trong ứng dụng thông qua các API
SeekableTransitionState
mới từ compose-animation. Nhờ đó, bạn có thể dùng cử chỉ quay lại để xem đích đến trước đó bằng hiệu ứng chuyển đổi tuỳ chỉnh trước khi quyết định xác nhận giao dịch thông qua cử chỉ hoàn tất hoặc huỷ. (I8b8e9)
Phiên bản 2.8.0-alpha01
Ngày 24 tháng 1 năm 2024
Phát hành androidx.navigation:navigation-*:2.8.0-alpha01
. Phiên bản 2.8.0-alpha01 bao gồm các thay đổi sau.
Sửa lỗi
- Đã khắc phục lỗi rò rỉ
BackStackState
trong đó nhiều lệnh gọisaveState
trên một đích đến sẽ dẫn đến việc lưu nhiều trạng thái, nhưng chỉ trạng thái đầu tiên có thể được khôi phục. (I598b0, b/309559751) - Khắc phục vấn đề các đối số không phải là String sẽ không hiển thị đúng cách khi sử dụng các đối tượng hỗ trợ
NavigationUI
để điền tiêu đề của thanh ứng dụng. (#636, b/316676794)
Cập nhật về phần phụ thuộc
- Navigation Compose hiện phụ thuộc vào Compose
1.7.0-alpha01
, khắc phục một vấn đề có thể gây ra hiệu ứng chuyển động thu phóng không mong muốn. (b/297258205)
Đóng góp bên ngoài
- Cảm ơn SimonMarquis đã khắc phục vấn đề hiển thị đối với các đối số không phải Chuỗi khi sử dụng các trình trợ giúp
NavigationUI
để điền tiêu đề của thanh ứng dụng.
Phiên bản 2.7.7
Phiên bản 2.7.7
Ngày 7 tháng 2 năm 2024
Phát hành androidx.navigation:navigation-*:2.7.7
. Phiên bản 2.7.7 bao gồm các thay đổi sau.
Sửa lỗi
- Được chuyển ngược từ Navigation
2.8.0-alpha01
: Đã khắc phục lỗi rò rỉBackStackState
trong đó nhiều lệnh gọisaveState()
trên mộtNavBackStackEntry
sẽ dẫn đến việc lưu nhiều trạng thái, nhưng chỉ trạng thái đã lưu đầu tiên mới có thể được khôi phục. (I598b0, b/309559751) - Điều chỉnh đối với phiên bản cũ của Navigation
2.8.0-alpha01
: Khắc phục vấn đề các đối số không phải là chuỗi sẽ không hiển thị đúng cách khi sử dụng các đối tượng hỗ trợNavigationUI
để điền sẵn tiêu đề của thanh ứng dụng. (#636, b/316676794)
Đóng góp bên ngoài
- Cảm ơn SimonMarquis đã khắc phục vấn đề hiển thị đối với các đối số không phải Chuỗi khi sử dụng các trình trợ giúp
NavigationUI
để điền tiêu đề của thanh ứng dụng.
Phiên bản 2.7.6
Phiên bản 2.7.6
Ngày 13 tháng 12 năm 2023
Phát hành androidx.navigation:navigation-*:2.7.6
. Phiên bản 2.7.6 bao gồm các thay đổi sau.
Sửa lỗi
- Giờ đây, hàm
NavGraph
equals()
sẽ xem xét các nút của biểu đồ khác một cách chính xác thay vì chỉ xem xét nút gọi. Điều này sẽ đảm bảo rằng các biểu đồ có các nút với mã nhận dạng khác nhau sẽ không còn được coi là bằng nhau (I401cb, b/311414915)
Phiên bản 2.7.5
Phiên bản 2.7.5
Ngày 1 tháng 11 năm 2023
Phát hành androidx.navigation:navigation-*:2.7.5
. Phiên bản 2.7.5 bao gồm các thay đổi sau.
Cải thiện hiệu suất
- Cải thiện đáng kể hiệu suất (cả về thời gian và số lượng phân bổ) khi so sánh 2 biểu đồ. Điều này có nghĩa là các lệnh gọi như
setGraph
(nội bộ so sánh biểu đồ mới với biểu đồ hiện có) sẽ nhanh hơn nhiều và dẫn đến ít khung hình bị bỏ qua hơn. Cảm ơn Michał Z vì đã phân tích kỹ lưỡng để giúp chúng tôi cải thiện tính năng này. (I6ad62) - Giờ đây,
NavHost
sẽ kết xuất đích đến bắt đầu trong lần kết hợp đầu tiên thay vì phải đợi lần thứ hai để đọc trạng thái đã cập nhật. (I439a7, b/304852206)
Sửa lỗi
- Khắc phục vấn đề ngăn xếp lui của bạn sẽ bị loại bỏ nếu bạn gọi
setGraph
nhiều lần với cùng một biểu đồ chỉ khi có một đích đến trong biểu đồ chứa một thao tác liên kết hai đích đến. (Ieaed7) - Các hộp thoại được chuyển đến và đóng liên tục sẽ không còn xuất hiện trong danh sách
NavController.visibleEntries
nữa. (I67586, b/287969970) - Khi một mục được bật lên sau khi có thay đổi về cấu hình,
ViewModel
của mục đó sẽ được xoá đúng cách nếusaveState
là false. (Idf242, b/298164648) - Khắc phục vấn đề khiến
NavController
có thể xử lý cùng một đường liên kết sâu nhiều lần nếu ngăn xếp lui hoàn toàn trống trước khi thay đổi cấu hình hoặc gọi đếnsetGraph
chỉ khi Intent đến có cờFLAG_ACTIVITY_NEW_TASK
được đặt. (I73c7f)
Thông tin cập nhật về phần phụ thuộc
- Giờ đây, tính năng Điều hướng bằng các Mảnh phụ thuộc vào Fragment 1.6.2, khắc phục vấn đề trong đó các thực thể
ViewModel
của các mảnh lồng nhau sẽ không bị xoá khi gọiclearBackStack
.
Phiên bản 2.7.4
Phiên bản 2.7.4
Ngày 4 tháng 10 năm 2023
Phát hành androidx.navigation:navigation-*:2.7.4
. Phiên bản 2.7.4 bao gồm các thay đổi sau.
Tính năng mới
- Thêm chức năng hỗ trợ để
popUpTo
sử dụng các tuyến đường có đối số để cho phép quay lại một mục cụ thể sử dụng chính xác những đối số đó, phù hợp với chức năng hỗ trợ có trongpopBackStack
. (I731f4, b/299255572)
Sửa lỗi
- Khắc phục vấn đề khi việc làm gián đoạn một thao tác điều hướng bằng một thao tác điều hướng khác bằng
popUpTo
sẽ khiếnFragmentNavigator
gặp sự cố. (I3c848, b/301887045) - Khắc phục vấn đề trong đó thao tác nhấn nút quay lại của hệ thống khiến
currentDestination
không được cập nhật chính xác để khớp với Mảnh hiển thị. (Id0d6c, b/289877514) - Vòng đời
DialogFragment
hiện sẽ chuyển sang trạng tháiRESUMED
đúng cách khi hộp thoại phía trên bị đóng. (I88f0d, b/301811387)
Phiên bản 2.7.3
Phiên bản 2.7.3
Ngày 20 tháng 9 năm 2023
Phát hành androidx.navigation:navigation-*:2.7.3
. Phiên bản 2.7.3 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục một vấn đề trong Navigation với các Mảnh khiến danh sách
visibleEntries
chứa các mục không chính xác. (I5caa9, b/288520638) - Khắc phục vấn đề khiến đích đến Cửa sổ nổi (tức là
Dialogs
,Bottomsheets
, v.v.) không bao giờ nhận được lệnh gọi lại Vòng đờiRESUMED
. (I3b866, b/287505132)
Phiên bản 2.7.2
Phiên bản 2.7.2
Ngày 6 tháng 9 năm 2023
Phát hành androidx.navigation:navigation-*:2.7.2
. Phiên bản 2.7.2 bao gồm các thay đổi sau.
Sửa lỗi
- Navigation hiện phụ thuộc vào Lifecycle
2.6.2
, khắc phục một tương tác giữarememberSaveable
vàNavHost
của Navigation Compose. Tương tác này sẽ khiến trạng tháirememberSaveable
của các đích đến và mọi thực thểViewModel
thuộc sở hữu củaSavedStateHandle
không được khôi phục đúng cách sau khi quá trình kết thúc và tái tạo. (b/298059596, b/289436035) - Khắc phục vấn đề khi hiển thị đồng thời nhiều hộp thoại trong Navigation Compose, trong đó các hộp thoại bị che khuất một phần (ví dụ: không phải hộp thoại trên cùng) sẽ ở trạng thái Vòng đời
CREATED
thay vì trạng tháiSTARTED
. (aosp/2728520, b/289257213) - Đã khắc phục một vấn đề khi hiển thị đồng thời nhiều hộp thoại trong Navigation Compose, trong đó việc loại bỏ hộp thoại trên cùng sẽ khiến hộp thoại trên cùng mới bị kẹt ở trạng thái Vòng đời
STARTED
thay vì chuyển sangRESUMED
một cách chính xác. (aosp/2629401, b/286371387) - Navigation Safe Args không còn khởi tạo tác vụ một cách háo hức nếu tác vụ đó thực sự không được thực thi. (I0e385, b/260322841)
Cập nhật về phần phụ thuộc
- Navigation Compose hiện phụ thuộc vào Compose 1.5.1.
Phiên bản 2.7.1
Phiên bản 2.7.1
Ngày 23 tháng 8 năm 2023
Phát hành androidx.navigation:navigation-*:2.7.1
. Phiên bản 2.7.1 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục vấn đề trong Navigation với Compose, trong đó khi sử dụng
Scaffold
, bạn có thể gặp lỗi khi cố gắng truy cập vàoLifecycle.State.DESTROYED
ViewModel
. (I1dc11, b/268422136)
Phiên bản 2.7.0
Phiên bản 2.7.0
Ngày 9 tháng 8 năm 2023
Phát hành androidx.navigation:navigation-*:2.7.0
. Phiên bản 2.7.0 bao gồm các thay đổi sau.
Các thay đổi quan trọng kể từ phiên bản 2.6.0
Ảnh động từ Accompanist
Giờ đây, khi AnimatedContent
đã ổn định, chúng tôi có thể di chuyển mã từ Ảnh động điều hướng đi kèm trở lại chính Navigation Compose.
Điều này có nghĩa là tất cả các chế độ hỗ trợ để đặt hiệu ứng chuyển đổi tuỳ chỉnh có trong AnimatedNavHost
đều được hỗ trợ trực tiếp trong NavHost
.
Chúng tôi sẽ không thực hiện thêm bất kỳ thay đổi nào đối với Accompanist Navigation Animation và sẽ chính thức ngừng cung cấp thư viện này trong thời gian tới, cùng với hướng dẫn về cách di chuyển trở lại Navigation Compose. Tuy nhiên, hướng dẫn này sẽ ngược lại với hướng dẫn di chuyển mà không yêu cầu thay đổi API nào khác nếu bạn đang sử dụng phiên bản alpha mới nhất của Accompanist (0.31.2-alpha
). (b/197140101)
Sửa lỗi
- NavHost trong Navigation Compose hiện chặn đúng cách các lệnh gọi quay lại của hệ thống ngay cả sau khi Hoạt động đã bị DỪNG và TIẾP TỤC. (Icb6de, b/279118447)
Thông tin cập nhật về phần phụ thuộc
- Hiện tại, Navigation phụ thuộc vào Compose
1.5.0
từ1.1.0
.
Phiên bản 2.7.0-rc01
Ngày 26 tháng 7 năm 2023
Phát hành androidx.navigation:navigation-*:2.7.0-rc01
. Phiên bản 2.7.0-rc01 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục vấn đề trong đó các lambda
EnterTransition
vàExitTransition
được tạo trongNavHost
có thể vẫn còn trong bộ nhớ ngay cả sau khiNavHost
bị xoá khỏi thành phần. (I893d0)
Lỗi đã biết
- Có một vấn đề từ Navigation 2.6.x là khi điều hướng bằng popUpTo, bạn có thể gây ra
IllegalArgumentException
. Bạn có thể tránh được trường hợp ngoại lệ này bằng cách tái cấu trúc biểu đồ của mình, tương tự như lời khuyên được đề xuất tại đây. (b/287133013)
Phiên bản 2.7.0-beta02
Ngày 28 tháng 6 năm 2023
Phát hành androidx.navigation:navigation-*:2.7.0-beta02
. Phiên bản 2.7.0-beta02 bao gồm các thay đổi sau.
Sửa lỗi
- Navigation Compose hiện có thứ tự z phù hợp cho các hiệu ứng chuyển đổi tuỳ chỉnh sử dụng thao tác điều hướng bằng lựa chọn
popUpTo
.(/Ib1c3a, b/285153947)
Phiên bản 2.7.0-beta01
Ngày 7 tháng 6 năm 2023
Phát hành androidx.navigation:navigation-*:2.7.0-beta01
. Phiên bản 2.7.0-beta01 bao gồm các thay đổi sau.
Sửa lỗi
- Giờ đây,
NavHost
trong Navigation Compose sẽ chặn chính xác các lệnh gọi quay lại của hệ thống ngay cả sau khiActivity
đã đượcSTOPPED
vàRESUMED
. (Icb6de, b/279118447)
Phiên bản 2.7.0-alpha01
Ngày 24 tháng 5 năm 2023
Phát hành androidx.navigation:navigation-*:2.7.0-alpha01
. Phiên bản 2.7.0-alpha01 bao gồm các thay đổi sau.
Ảnh động từ Accompanist
Giờ đây, khi AnimatedContent
đã ổn định, chúng tôi có thể di chuyển mã từ Ảnh động điều hướng đi kèm trở lại chính Navigation Compose.
Điều này có nghĩa là tất cả các chế độ hỗ trợ để đặt hiệu ứng chuyển đổi tuỳ chỉnh có trong AnimatedNavHost
đều được hỗ trợ trực tiếp trong NavHost
.
Chúng tôi sẽ không thực hiện thêm bất kỳ thay đổi nào đối với Accompanist Navigation Animation và sẽ chính thức ngừng cung cấp thư viện này trong thời gian tới, cùng với hướng dẫn về cách di chuyển trở lại Navigation Compose. Tuy nhiên, hướng dẫn này sẽ ngược lại với hướng dẫn di chuyển mà không yêu cầu thay đổi API nào khác nếu bạn đang sử dụng phiên bản alpha mới nhất của Accompanist (0.31.2-alpha
). (b/197140101)
Sửa lỗi
- Từ Navigation
2.6.0-rc02
: Khắc phục vấn đề với Navigation trong các mảnh, trong đó việc điều hướng bằngpopUpTo
và bật một mảnh ra khỏi ngăn xếp lui mà không tạo lại khung hiển thị của mảnh đó sẽ khiến nút quay lại của hệ thống ngừng hoạt động. (Ieb8d4, b/281726455)
Thông tin cập nhật về phần phụ thuộc
- Hiện tại, Navigation phụ thuộc vào Compose
1.5.0-beta01
.
Phiên bản 2.6.0
Phiên bản 2.6.0
Ngày 7 tháng 6 năm 2023
Phát hành androidx.navigation:navigation-*:2.6.0
. Phiên bản 2.6.0 bao gồm các thay đổi sau.
Các thay đổi quan trọng đối với Navigation kể từ phiên bản 2.5.0
arguments
củaNavBackStackEntry
vàarguments
được chuyển đếnOnDestinationChangedListener
hiện chỉ là bản sao của các đối số không thể thay đổi được tạo khi bạn điều hướng tới đích đến. Điều này có nghĩa là mọi thay đổi đối với các Gói đó sẽ không được cập nhật trong các lần truy cập tiếp theo vàoarguments
hoặc các thực thể khác củaOnDestinationChangedListener
.NavDeepLink
hiện hỗ trợ giá trị mặc định cho các mảng, nhờ vậy mà có thể hỗ trợ các tham số truy vấn lặp lại (ánh xạ đến loại mảng của đối số). Giờ đây,NavType
cũng bao gồm cả một phương thức mặc định có thể được ghi đè để kết hợp 2 giá trị đã phân tích cú pháp.- Giờ đây, các lớp con tuỳ chỉnh của
NavType
có thể ghi đèserializeAsValue
để chuyển đổi tuần tự một giá trị thành một String (chuỗi), cho phép đóng gói hoàn toàn quá trình chuyển đổi tuần tự và huỷ chuyển đổi tuần tự (thông quaparseValue
) trong lớpNavType
.StringType
hiện ghi đè phương thức này để gọiUri.encode
trênString
đã cho.
Các thay đổi quan trọng đối với Navigation Compose kể từ phiên bản 2.5.0
- Theo mặc định, khi xem trước một thành phần kết hợp bằng
NavHost
, thành phần này sẽ hiệnstartDestination
của NavGraph. NavController.popBackStack(route)
,NavController.getBackStackEntry(route)
,NavController.clearBackStack(route)
hiện đều hỗ trợ các tuyến có đối số được điền một phần hoặc toàn bộ. Lưu ý rằng các đối số này phải khớp chính xác với đối số của mục nhập.- Giờ đây, việc cố gắng tạo một
NavDeepLink
trống bằng cách sử dụng Kotlin DSLnavDeepLink
sẽ dẫn đến cảnh báo Lint (tìm lỗi mã nguồn) cho biết rằng đường liên kết sâu cần có URI, hành động và/hoặc loại mime thì mới hợp lệ.
Các thay đổi quan trọng đối với thành phần Điều hướng bằng các mảnh kể từ phiên bản 2.5.0
NavHostFragment
không còn tự chặn nút quay lại của hệ thống nữa. Nhờ đó,FragmentManager
cơ bản có thể xử lý thao tác quay lại hệ thống. Điều này cho phép Fragment1.7.0-alpha01
trở lên cung cấp ảnh động Xem trước thao tác quay lại trong ứng dụng trên các thiết bị Android U.- Khi sử dụng Navigation với các Mảnh, việc tìm cách thực hiện
FragmentTransaction
theo cách thủ công để thêm một mảnh vào ngăn xếp lui củaFragmentManager
sẽ tạo ra mộtIllegalArgumentException
. Bạn nên luôn thêm các mảnh thông qua APInavigate()
. - Khi sử dụng
${applicationId}
ở dạng chuỗi chính xác làm phần giữ chỗ trong thuộc tínhapp:data
vàapp:dataPattern
trong phần tử hoạt động của tệp XML điều hướng, phần giữ chỗ sẽ tự động được điền bằngpackageName
của ngữ cảnh khi tăng cường. FragmentNavigator
hiện sử dụng các API chuyển đổi khi điều hướng và bậtNavBackStackEntries
. Tức là giờ đây,NavBackStackEntry
Lifecycle
sẽ đợi các hiệu ứng đặc biệt của mảnh vào và thoát hoàn tất trước khi di chuyểnLifecycle.State
cuối cùng.DialogFragmentNavigator
hiện sử dụng các API chuyển đổi khi điều hướng và bậtNavBackStackEntries
. Tức là giờ đây,NavBackStackEntry
Lifecycle
sẽ chờDialogFragment
Lifecycle
chuyển sangDESTROYED
trước khi chuyển sang chínhDESTROYED
.- Giờ đây,
NavHostFragment
cho phép bạn truy xuấtNavController
ngay khiNavHostFragment
được đính kèm vàoFragmentManager
, thay vì chỉ sauonCreate()
. - Khả năng hỗ trợ của Điều hướng cho Mô-đun có tính năng động hiện phụ thuộc vào Thư viện Play Feature Delivery chi tiết.
- Trình bổ trợ Navigation Safe Args hiện phụ thuộc vào trình bổ trợ Android cho Gradle, phiên bản 7.3.0. Do đó, trình bổ trợ này hiện chỉ tương thích với các phiên bản từ 7.3.0 trở lên.
Các thay đổi quan trọng đối với NavigationUI kể từ phiên bản 2.5.0
- Khi chuyển mã nhận dạng của biểu đồ điều hướng sang
AppBarConfiguration
(chẳng hạn như quaMenu
),NavigationUI
hiện chỉ coi đích đến bắt đầu của biểu đồ điều hướng đó là đích đến cấp cao nhất, thay vì đánh dấu không chính xác từng đích đến trong biểu đồ dưới dạng đích đến cấp cao nhất. Hành vi chuyển mã nhận dạng của từng đích đến là không thay đổi. Chức năng tương tự này hiện cũng có cho mã của chính bạn thông qua hàmisTopLevelDestination
mới trênAppBarConfiguration
. - Việc tích hợp
setupWithNavController
trongNavigationUI
để thao tác với thanh ứng dụng ở trên cùng hiện sẽ phân tích cú pháp các giá trịR.string
cho đối sốReferenceType
có trongandroid:label
thành các giá trị Chuỗi thay vì xuất số nguyên tài nguyên được tạo tự động. NavigationUI
hiện cung cấp nhật ký khi không thao tác được quaMenuItem
đã chọn.
Phiên bản 2.6.0-rc02
Ngày 24 tháng 5 năm 2023
Phát hành androidx.navigation:navigation-*:2.6.0-rc02
. Phiên bản 2.6.0-rc02 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục vấn đề với Navigation trong các Mảnh, trong đó việc điều hướng bằng
popUpTo
và bật một mảnh ra khỏi ngăn xếp lui mà không tạo lại khung hiển thị của mảnh đó sẽ khiến nút quay lại của hệ thống ngừng hoạt động. (Ieb8d4, b/281726455)
Phiên bản 2.6.0-rc01
Ngày 10 tháng 5 năm 2023
Phát hành androidx.navigation:navigation-*:2.6.0-rc01
. Phiên bản 2.6.0-rc01 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục một vấn đề trong Navigation với các mảnh, trong đó việc xoá một mảnh thông qua thao tác điều hướng bằng
popUpTo
trong lệnh gọi lại vòng đờionResume()
sẽ gây raIllegalStateException
. (I21884, b/279644470)
Phiên bản 2.6.0-beta01
Ngày 19 tháng 4 năm 2023
Phát hành androidx.navigation:navigation-*:2.6.0-beta01
. Phiên bản 2.6.0-beta01 bao gồm các thay đổi sau.
Tính năng mới
NavBackStackEntry
hiện cung cấp một cách triển khaitoString
tuỳ chỉnh. (Iff00b)
Sửa lỗi
- Khi sử dụng Navigation với các Mảnh, việc tìm cách thực hiện
FragmentTransaction
theo cách thủ công để thêm một mảnh vào ngăn xếp lui củaFragmentManager
sẽ tạo ra mộtIllegalArgumentException
. Bạn nên luôn thêm các mảnh thông qua APInavigate()
. (I6d38e) - Khi có một
navigate
thêm một mục và mộtpopBackStack
xoá mục đó trong cùng một khung hình, mục nhập trên cùng thu được trên ngăn xếp lui giờ đây sẽ luôn quay lạiRESUMED
Lifecycle.State
. (Id8067, b/276495952)
Phiên bản 2.6.0-alpha09
Ngày 5 tháng 4 năm 2023
Phát hành androidx.navigation:navigation-*:2.6.0-alpha09
. Phiên bản 2.6.0-alpha09 bao gồm các thay đổi sau.
Sửa lỗi
- Đã khắc phục các bước kiểm tra cho tuyến không hợp lệ để nếu
NavDestination
chứaNavArgument
không thể rỗng, thì tuyến của đích đến này phải chứa các phần giữ chỗ cho các đối số có tên giống nhưNavArgument
không thể rỗng. (Ic62bf, b/274697949) - Hoạt động điều hướng bằng đường liên kết sâu dựa trên
Action/MimeType
hiện sẽ không thành công nếu thao tác điều hướng thiếuNavArgument
không thể rỗng màNavDestination
yêu cầu vàAction/MimeType
khớp với thao tác đó. (Ibfa17, b/271777424) - Khi
NavController
đặt một biểu đồ có cùng tuyến đường và đích đến như biểu đồ trước đó, giờ đây, biểu đồ này sẽ thay thế đúng cách các nút biểu đồ hiện tại và đích đến ngăn xếp lui bằng các thực thể mới. Điều này khắc phục sự cố khi sử dụngonLaunchSingleTop
mà không lưu trạng thái trong Navigation Compose. Điều này cũng khắc phục một lỗi trong đó việc điều hướng đến các đích đến được liên kết với biểu đồ gốc sẽ tạo ra ngăn xếp lui không chính xác. (I5bc58, b/275258161, b/275407804)
Phiên bản 2.6.0-alpha08
Ngày 22 tháng 3 năm 2023
Phát hành androidx.navigation:navigation-*:2.6.0-alpha08
. Phiên bản 2.6.0-alpha08 bao gồm các thay đổi sau.
Tính năng mới
- Giờ đây,
NavHostFragment
cho phép bạn truy xuấtNavController
ngay khiNavHostFragment
được đính kèm vàoFragmentManager
, thay vì chỉ sauonCreate()
. (Ic6382, b/220186282)
Sửa lỗi
- Đã khắc phục
NullPointerException
khi hiển thị một biểu đồ lồng ghép có chứa một đối số không thể rỗng. (6b3581, b/249988437) - Khi sử dụng thao tác quay lại của hệ thống sau khi thực hiện thao tác điều hướng bằng
popUpTo
, trạng thái củaNavController
sẽ chuyển đến mục nhập chính xác. (I3a8ec, b/270447657) - Giờ đây,
FragmentNavigator
sẽ bật các mục đúng cách khi ngăn xếp lui được bật thông qua hệ thống quay lại hoặcpopBackStack()
và giao dịch có sử dụng hiệu ứng cho mảnh hay không. (I81bdf) - Việc thêm các mảnh vào
FragmentManager
củaFragmentNavigator
mà không sử dụng tính năng điều hướng sẽ không còn gây ra sự cố nữa. (b17204, b/274167493)
Thông tin cập nhật về phần phụ thuộc
- Hiện tại, Navigation phụ thuộc vào Vòng đời
2.6.1
. (586fe7) - Hiện tại, Navigation phụ thuộc vào SavedState
1.2.1
. (078e4e) - Hiện tại, Navigation phụ thuộc vào ProfileInstaller
1.3.0
. (512f0c)
Phiên bản 2.6.0-alpha07
Ngày 8 tháng 3 năm 2023
Phát hành androidx.navigation:navigation-*:2.6.0-alpha07
. Phiên bản 2.6.0-alpha07 bao gồm các thay đổi sau.
Sửa lỗi
- Các biến thể API
getBackStackEntry
,popBackStack
,clearBackStack
hiện có các mẫu tuyến đường với các đối số có thể rỗng và các tham số truy vấn có thể rỗng (I22294, b/269302500) - Khắc phục vấn đề khi việc gọi
clearBackStack()
từNavController
sẽ không xoá trạng thái đã lưu trong trình quản lý mảnh được liên kết với ngăn xếp lui đã xoá. (Ic1cce, b/271190202) - Khắc phục một lỗi hồi quy trong phiên bản 2.6.0-alpha06 khiến
MenuItem
không chính xác trongBottomNavigationView
được làm nổi bật khi sử dụng nút Quay lại của hệ thống giữa các thẻ. (I634f6, b/270447657) - Khắc phục lỗi hồi quy trong phiên bản 2.6.0-alpha06 khiến các
NavBackStackEntry
không được chuyển sang trạng thái RESUMED khi dùngAnimation
. (Ib3589, b/269646882)
Phiên bản 2.6.0-alpha06
Ngày 22 tháng 2 năm 2023
Phát hành androidx.navigation:navigation-*:2.6.0-alpha06
. Phiên bản 2.6.0-alpha06 bao gồm các thay đổi sau.
Tính năng mới
- Theo mặc định, khi xem trước một thành phần kết hợp bằng
NavHost
, thành phần này sẽ hiệnstartDestination
của NavGraph. (I2b89f)
Thay đổi về API
- Tất cả các phương thức nạp chồng
navigate
củaNavController
hiện đều được chú giải bằng@MainThread
để đảm bảo rằng những phương thức này được gọi trên luồng chính. (I2c0b0, b/263427111)
Sửa lỗi
- Khắc phục sự cố khi tìm cách điều hướng trong lúc dùng tính năng Điều hướng mảnh động. (I3ee29, b/268360479)
- Khắc phục lỗi xảy ra khi việc điều hướng đến một mảnh khác thông qua nút quay lại của hệ thống không cập nhật thanh dưới cùng thành đúng mục đã chọn (If559f, b/269044426)
Lỗi đã biết
- Khi sử dụng Navigation với Fragment, Vòng đời của
NavBackStackEntry
không đạt đếnRESUMED
khi sử dụng các APIAnimation
. (b/269646882) - Khi sử dụng Navigation với các Fragment và điều hướng bằng
BottomNavigation
, nếu bạn cố gắng khôi phục một ngăn xếp lui có nhiều mục, thìBottomMenuItem
sẽ không được cập nhật đúng cách. (b/270447657) - Khi bạn dùng Navigation với Fragment, sau khi khôi phục trạng thái,
NavBackStackEntry
Lifecycle
sẽ không nhận đượcDESTROYED
khi mảnh của nó làDESTROYED
. (b/270610768)
Phiên bản 2.6.0-alpha05
Ngày 8 tháng 2 năm 2023
Phát hành androidx.navigation:navigation-*:2.6.0-alpha05
. Phiên bản 2.6.0-alpha05 bao gồm các thay đổi sau.
Tính năng mới
NavController.popBackStack(route)
,NavController.getBackStackEntry(route)
,NavController.clearBackStack(route)
hiện đều hỗ trợ các tuyến có đối số được điền một phần hoặc toàn bộ. Lưu ý rằng các đối số này phải khớp chính xác với đối số của mục nhập. (Iebd28, Ic678c, I3b37b, b/257514373)FragmentNavigator
hiện sử dụng các API chuyển đổi khi điều hướng và bậtNavBackStackEntries
. Tức là giờ đây,NavBackStackEntry
Lifecycle
sẽ đợi các hiệu ứng đặc biệt của mảnh vào và thoát hoàn tất trước khi di chuyểnLifecycle.State
cuối cùng. (I3cb19, b/238686802)DialogFragmentNavigator
hiện sử dụng các API chuyển đổi khi điều hướng và bậtNavBackStackEntries
. Tức là giờ đây,NavBackStackEntry
Lifecycle
sẽ chờDialogFragment
Lifecycle
chuyển sangDESTROYED
trước khi chuyển sang chínhDESTROYED
. (I53ee5, b/261213893)
Các thay đổi về API
NavigatorState
hiện cung cấp APIprepareForTransition
để cho phépNavigator
di chuyểnNavBackStackEntries
sangLifecycle.State
trung gian. (I42c21, b/238686802)- Bạn hiện có thể truy cập vào ngăn xếp lui liên kết với
NavGraphNavigator
hoặcComposeNavigator
thông qua thuộc tínhbackstack
. Giờ đây,ComposeNavigator
cũng hiển thị lệnh gọi lạionTransitionComplete()
để đánh dấuNavBackStackEntry
là đã thực thi thao tác điều hướng hoặcpopBackStack
. (I02062, I718db, b/257519195)
Sửa lỗi
- Trạng thái của Trình điều hướng hiện sẽ không hoạt động khi sử dụng API
push/popWithTransition
và mục nhập đã được xử lý. (Iadbfa, b/261213893) - Khi sử dụng
launchSingleTop
cùng vớiNavGraph
lồng nhau, tất cả các đích đến bắt đầu từ đích đến ban đầu tớistartDestination
của nó sẽ chỉ được thêm đúng cách vào đầu ngăn xếp lui. (Id4bea, b/253256629) - Giờ đây, tính năng Navigation (Điều hướng) sẽ thay thế đúng cách thực thể
DialogFragment
khi điều hướng tới cùng một đích đến với cờlaunchSingleTop
được đặt thành true. (I45b5a, b/149572817) - SafeArgs của tính năng Điều hướng sẽ không còn gây ra lỗi biên dịch khi sử dụng các đối số có đúng 19 ký tự. (Id60bc, b/257110095)
Phiên bản 2.6.0-alpha04
Ngày 9 tháng 11 năm 2022
Phát hành androidx.navigation:navigation-*:2.6.0-alpha04
. Phiên bản 2.6.0-alpha04 bao gồm các thay đổi sau.
Tính năng mới
- Giờ đây, các lớp con tuỳ chỉnh của
NavType
có thể ghi đèserializeAsValue
để chuyển đổi tuần tự một giá trị thành một String (chuỗi), cho phép đóng gói hoàn toàn quá trình chuyển đổi tuần tự và huỷ chuyển đổi tuần tự (thông quaparseValue
) trong lớpNavType
.StringType
hiện ghi đè phương thức này để gọiUri.encode
trênString
đã cho. (Ie5213, b/247637434) NavigationUI
hiện cung cấp nhật ký khi không thao tác được quaMenuItem
đã chọn. (I2af5a, b/247730357)
Sửa lỗi
- Giờ đây, các đường liên kết sâu của tính năng Điều hướng được phân tích cú pháp từng phần thay vì khởi tạo biểu đồ, cách này có thể giúp cải thiện hiệu suất của ứng dụng khi khởi động. (Iab0ab)
- Khắc phục sự cố do di chuyển lên sau khi liên kết sâu đến một đích đến có đối số mặc định rỗng. (I51c24, b/243183636)
Cập nhật về phần phụ thuộc
- Khả năng hỗ trợ của Điều hướng cho Mô-đun có tính năng động hiện phụ thuộc vào Thư viện Play Feature Delivery chi tiết. (Ib4ddc)
- Trình bổ trợ Navigation Safe Args hiện phụ thuộc vào trình bổ trợ Android cho Gradle, phiên bản 7.3.0. Do đó, trình bổ trợ này hiện chỉ tương thích với các phiên bản từ 7.3.0 trở lên. (I47e49)
Phiên bản 2.6.0-alpha03
Ngày 24 tháng 10 năm 2022
Phát hành androidx.navigation:navigation-*:2.6.0-alpha03
. Phiên bản 2.6.0-alpha03 bao gồm các thay đổi sau.
Sửa lỗi
- Từ phiên bản Navigation
2.5.3
:NavHost
sẽ không còn gây raNoSuchElementException
khi không có đích đến đểCrossfade
kết hợp. Hệ thống hiện sẽ bỏ qua lần kết hợp đó. (Ieb46e, b/253299416) - Trên Navigation
2.5.3
: Khắc phục sự cố trạng thái Compose đã lưu (ví dụ: việc sử dụngrememberSaveable
) không bị xoá và chỉ bị xoá khi một đích đến được đẩy ra khỏi ngăn xếp lui. (I64949)
Thông tin cập nhật về phần phụ thuộc
- Hiện tại, Navigation sẽ phụ thuộc vào Fragment
1.5.4
. (