Status Update
Comments
il...@google.com <il...@google.com>
il...@google.com <il...@google.com> #2
Project: platform/frameworks/support
Branch: androidx-main
Author: Jeremy Woods <
Link:
Remove android specific NavControllerViewModel
Expand for full commit details
Remove android specific NavControllerViewModel
Everything in NavControllerViewModel is common API so we don't need an
Android version. Moving that code to common.
Test: all tests pass
Bug: 403616316
Change-Id: Ibe154b2d04adc0a536f9a5e170cc8fbb44ed1bcf
Files:
- D
navigation/navigation-runtime/src/androidMain/kotlin/androidx/navigation/NavControllerViewModel.android.kt
- M
navigation/navigation-runtime/src/commonMain/kotlin/androidx/navigation/NavControllerViewModel.kt
Hash: 3bb40a6be709d8c7e13f56f248a6433154aec72e
Date: Fri Mar 14 21:37:30 2025
sl...@czerwinski.info.pl <sl...@czerwinski.info.pl> #3
Project: platform/frameworks/support
Branch: androidx-main
Author: Jeremy Woods <
Link:
Implement nonAndroid NavType
Expand for full commit details
Implement nonAndroid NavType
Moving call common implementation of NavType to commonMain and then
allow both the nonAndroid and Android implementation to use them.
Test: all tests pass
Bug: 403616316
Change-Id: I297d8846859aaa719b179c7e69e993d0d6e28fd6
Files:
- M
navigation/navigation-common/src/androidMain/kotlin/androidx/navigation/NavType.android.kt
- M
navigation/navigation-common/src/commonMain/kotlin/androidx/navigation/NavType.kt
- M
navigation/navigation-common/src/nonAndroidMain/kotlin/androidx/navigation/NavType.nonAndroid.kt
Hash: 8f968ddbb3b8296af2033db4cf2658255fa43853
Date: Fri Mar 14 22:41:34 2025
il...@google.com <il...@google.com> #4
Project: platform/frameworks/support
Branch: androidx-main
Author: Jeremy Woods <
Link:
Change NavBackStackEntryState to SavedState
Expand for full commit details
Change NavBackStackEntryState to SavedState
Instead of NavBackStackEntryState being a Parcelable, we can change it
to use SavedState. This allows for compat with other platforms.
Test: all tests pass
Bug: 403616316
Change-Id: I1da40e98fbc70413e0818a95cb00aa1e5aa7a3dd
Files:
- M
navigation/navigation-runtime/src/androidMain/kotlin/androidx/navigation/NavBackStackEntryState.android.kt
- M
navigation/navigation-runtime/src/androidMain/kotlin/androidx/navigation/NavController.android.kt
- A
navigation/navigation-runtime/src/commonMain/kotlin/androidx/navigation/NavBackStackEntryState.kt
- A
navigation/navigation-runtime/src/commonMain/kotlin/androidx/navigation/internal/NavBackStackEntryStateImpl.kt
- A
navigation/navigation-runtime/src/nonAndroidMain/kotlin/androidx/navigation/NavBackStackEntryState.nonAndroid.kt
Hash: 52447f8ffb1f3e1f9890f8bb9d1ac1690aad508d
Date: Thu Mar 20 19:48:37 2025
il...@google.com <il...@google.com>
ap...@google.com <ap...@google.com> #5
Project: platform/frameworks/support
Branch: androidx-main
Author: Jeremy Woods <
Link:
Introduce NavContext
Expand for full commit details
Introduce NavContext
Providing a multiplatform compatible version of Context that can be
used across navigation.
RelNote: "Added multi-platform NavContext that helps to wrap Android's context."
Test: all tests pass
Bug: 403616316
Change-Id: Ic4b1249ea6dc1a363855a4162ef136bf74809256
Files:
- M
navigation/navigation-common/bcv/native/current.txt
- M
navigation/navigation-common/src/androidMain/kotlin/androidx/navigation/NavBackStackEntry.android.kt
- M
navigation/navigation-common/src/androidMain/kotlin/androidx/navigation/NavDestination.android.kt
- M
navigation/navigation-common/src/androidMain/kotlin/androidx/navigation/NavGraph.android.kt
- A
navigation/navigation-common/src/androidMain/kotlin/androidx/navigation/internal/NavContext.android.kt
- M
navigation/navigation-common/src/commonMain/kotlin/androidx/navigation/NavBackStackEntry.kt
- A
navigation/navigation-common/src/commonMain/kotlin/androidx/navigation/internal/NavContext.kt
- M
navigation/navigation-common/src/nonAndroidMain/kotlin/androidx/navigation/NavBackStackEntry.nonAndroid.kt
- A
navigation/navigation-common/src/nonAndroidMain/kotlin/androidx/navigation/internal/NavContext.nonAndroid.kt
- M
navigation/navigation-runtime/src/androidInstrumentedTest/kotlin/androidx/navigation/NavBackStackEntryTest.kt
- M
navigation/navigation-runtime/src/androidMain/kotlin/androidx/navigation/NavBackStackEntryState.android.kt
- M
navigation/navigation-runtime/src/androidMain/kotlin/androidx/navigation/NavController.android.kt
- M
navigation/navigation-runtime/src/androidMain/kotlin/androidx/navigation/NavDeepLinkBuilder.android.kt
- M
navigation/navigation-runtime/src/commonMain/kotlin/androidx/navigation/NavController.kt
- M
navigation/navigation-runtime/src/nonAndroidMain/kotlin/androidx/navigation/NavController.nonAndroid.kt
- M
navigation/navigation-testing/src/androidMain/kotlin/androidx/navigation/testing/TestNavigatorState.android.kt
- M
navigation/navigation-ui/src/main/java/androidx/navigation/ui/NavigationUI.kt
Hash: 11b876fc10dec008f1f3b979795470f92ed4bb19
Date: Fri Mar 21 15:15:05 2025
il...@google.com <il...@google.com> #6
Project: platform/frameworks/support
Branch: androidx-main
Author: Jeremy Woods <
Link:
Introduce AtomicInt
Expand for full commit details
Introduce AtomicInt
Adding a multi-platform AtomicInteger implementation and using it in
NavController.
Test: all tests pass
Bug: 403616316
Change-Id: I4126b3b9f946bd651afe06a242194e6f2d40302c
Files:
- M
navigation/navigation-runtime/src/androidMain/kotlin/androidx/navigation/NavController.android.kt
- A
navigation/navigation-runtime/src/androidMain/kotlin/androidx/navigation/internal/AtomicInt.android.kt
- A
navigation/navigation-runtime/src/commonMain/kotlin/androidx/navigation/internal/AtomicInt.kt
- A
navigation/navigation-runtime/src/nonAndroidMain/kotlin/androidx/navigation/internal/AtomicInt.nonAndroid.kt
Hash: f6fe240b918e01ca382e741b728f43c068e3d9db
Date: Tue Mar 25 19:34:06 2025
ap...@google.com <ap...@google.com> #7
Project: platform/frameworks/support
Branch: androidx-main
Author: Jeremy Woods <
Link:
Provide NavController implementation in common
Expand for full commit details
Provide NavController implementation in common
Adding a new internal NavControllerImpl to clean up NavController
implementation.
RelNote: N/A
Test: all tests pass
Bug: 403616316
Change-Id: I7aee97b1c3a497803534480cb10205fdf0455310
Files:
- M
navigation/navigation-common/bcv/native/current.txt
- M
navigation/navigation-common/src/nonAndroidMain/kotlin/androidx/navigation/NavDestination.nonAndroid.kt
- M
navigation/navigation-runtime/bcv/native/current.txt
- M
navigation/navigation-runtime/src/androidMain/kotlin/androidx/navigation/NavController.android.kt
- M
navigation/navigation-runtime/src/commonMain/kotlin/androidx/navigation/NavController.kt
- A
navigation/navigation-runtime/src/commonMain/kotlin/androidx/navigation/internal/NavControllerImpl.kt
- M
navigation/navigation-runtime/src/nonAndroidMain/kotlin/androidx/navigation/NavController.nonAndroid.kt
Hash: 08d41ac1a7d63948d9747e5572e9bc47e2c539d6
Date: Wed Mar 26 07:51:37 2025
Description
Version used: 1.0.0-alpha02
Devices/Android versions reproduced on: Emulator API 28, Samsung J5 API 25
Sample project attached.
I'm trying to create a custom Navigator and custom NavDestination that would animate ConstraintLayout (but any custom NavDestination would cause this issue).
Intended behaviour is shown in attached video: Layout_animations.webm
However, when I rotate the screen, while the navigation is on the custom destination, the application crashes.
The crash is caused by an unknown destination, which can only be added after custom navigator.
If I add custom destination in nav_main.xml, the app will also crash, because the navigator is not yet added.
This issue could be fixed by extending NavHostFragment, but I would need to override the whole onCreate() method.
I would need to add my custom navigator right after the line:
mNavController = new NavController(context);
I can think of 2 possible solutions in the library:
1. Delegate creating of NavController, so that a custom NavController can be provided in the XML layout file.
2. Call a new protected method "NavHostFragment.onNavControllerCreated(NavController)" right after the NavController is created, that could be overridden in a custom NavHostFragment, before the graph is created.
If there is any solution to my problem that I didn't think of, please provide a more exhaustive example in the documentation:
Stack trace:
2018-06-25 10:54:28.356 14543-14543/it.czerwinski.customnavigatorexample E/AndroidRuntime: FATAL EXCEPTION: main
Process: it.czerwinski.customnavigatorexample, PID: 14543
java.lang.RuntimeException: Unable to start activity ComponentInfo{it.czerwinski.customnavigatorexample/it.czerwinski.customnavigatorexample.MainActivity}: android.view.InflateException: Binary XML file line #10: Binary XML file line #10: Error inflating class fragment
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2925)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3060)
at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:4792)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4711)
at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:69)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:110)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1800)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6649)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:826)
Caused by: android.view.InflateException: Binary XML file line #10: Binary XML file line #10: Error inflating class fragment
Caused by: android.view.InflateException: Binary XML file line #10: Error inflating class fragment
Caused by: java.lang.IllegalStateException: unknown destination during restore: it.czerwinski.customnavigatorexample:id/animatedLayoutDestination
at androidx.navigation.NavController.onGraphCreated(NavController.java:424)
at androidx.navigation.NavController.setGraph(NavController.java:386)
at androidx.navigation.NavController.restoreState(NavController.java:742)
at androidx.navigation.fragment.NavHostFragment.onCreate(NavHostFragment.java:215)
at androidx.fragment.app.Fragment.performCreate(Fragment.java:2400)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1418)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1684)
at androidx.fragment.app.FragmentManagerImpl.onCreateView(FragmentManager.java:3772)
at androidx.fragment.app.FragmentController.onCreateView(FragmentController.java:120)
at androidx.fragment.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:395)
at androidx.fragment.app.FragmentActivity.onCreateView(FragmentActivity.java:377)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:780)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:467)
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
at it.czerwinski.customnavigatorexample.MainActivity.onCreate(MainActivity.kt:15)
at android.app.Activity.performCreate(Activity.java:7130)
at android.app.Activity.performCreate(Activity.java:7121)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1262)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2905)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3060)
at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:4792)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4711)
2018-06-25 10:54:28.356 14543-14543/it.czerwinski.customnavigatorexample E/AndroidRuntime: at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:69)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:110)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1800)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6649)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:826)