Status Update
Comments
lo...@gmail.com <lo...@gmail.com> #2
Oh I forgot to mention that I thought it might be connected to this issue:
ag...@gmail.com <ag...@gmail.com> #3
Please provide a minimal sample project along with the minimal steps to recreate the issue in the project.
be...@google.com <be...@google.com> #4
Sorry for the delay. I got a working example here:
I poked into it a little bit and it seems to be connected to
Steps to reproduce:
- Navigate from Second Fragment to Child nav graph (with non-nullable parameters).
- Navigate to Third fragment using SafeArgs and the app crashes.
Crash log:
Process: cz.dels.issues, PID: 1743
java.lang.NullPointerException: null cannot be cast to non-null type kotlin.Long
at androidx.navigation.NavType$Companion$LongType$1.get(NavType.kt:352)
at androidx.navigation.NavType$Companion$LongType$1.get(NavType.kt:342)
at androidx.navigation.NavArgument.verify(NavArgument.kt:76)
at androidx.navigation.NavDestination.addInDefaultArgs(NavDestination.kt:502)
at androidx.navigation.NavController.addEntryToBackStack(NavController.kt:1865)
at androidx.navigation.NavController.addEntryToBackStack$default(NavController.kt:1813)
at androidx.navigation.NavController$navigate$4.invoke(NavController.kt:1721)
at androidx.navigation.NavController$navigate$4.invoke(NavController.kt:1719)
at androidx.navigation.NavController$NavControllerNavigatorState.push(NavController.kt:287)
at androidx.navigation.fragment.FragmentNavigator.navigate(FragmentNavigator.kt:246)
at androidx.navigation.fragment.FragmentNavigator.navigate(FragmentNavigator.kt:162)
at androidx.navigation.NavController.navigateInternal(NavController.kt:260)
at androidx.navigation.NavController.navigate(NavController.kt:1719)
at androidx.navigation.NavController.navigate(NavController.kt:1545)
at androidx.navigation.NavController.navigate(NavController.kt:1472)
at androidx.navigation.NavController.navigate(NavController.kt:1930)
at cz.dels.issues.SecondFragment.onViewCreated$lambda-0(SecondFragment.kt:38)
at cz.dels.issues.SecondFragment.$r8$lambda$XDYnOS_cYrafiNQ5rcCu1WCn0IE(Unknown Source:0)
at cz.dels.issues.SecondFragment$$ExternalSyntheticLambda0.onClick(Unknown Source:2)
Note: If in step 2 SaveArgs is not used then navigation works correctly. More information is here:
ap...@google.com <ap...@google.com> #5
Ups a typo: Navigate from Second First Fragment to Child nav graph (with non-nullable parameters).
Note: sorry for the spam but I am not able to edit my own comment.
il...@google.com <il...@google.com> #6
This has been fixed and will be available in navigation 2.6.0-alpha08
ap...@google.com <ap...@google.com> #7
Branch: androidx-main
commit 6b358154b794a0456b089ac8e548bfb830dd6c22
Author: Clara Fok <clarafok@google.com>
Date: Tue Mar 14 17:56:12 2023
Fix missing non-nullable arg when rebuilding hierarchy
When navigating with NavDirections, args is populated with an empty bundle. This causes issue when we rebuild parent hierarchy while adding a new entry to NavBackStack. If the Entry being rebuilt contains a non-nullalbe arg, i.e. Long, this empty bundle will cause an exception.
Test: ./gradlew navigation:navigation-runtime:cC
Bug: 249988437
Change-Id: I5c8ce739ad9a3428c8a8de13eae391bfff0db5df
M navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavControllerTest.kt
M navigation/navigation-runtime/src/main/java/androidx/navigation/NavController.kt
ap...@google.com <ap...@google.com> #8
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.navigation:navigation-runtime:2.6.0-alpha08
ap...@google.com <ap...@google.com> #9
Branch: androidx-master-dev
commit 3c0404251aeb98801b422072f86127739fa59f60
Author: Ben Weiss <benweiss@google.com>
Date: Wed Apr 22 21:54:02 2020
Add reified fragment for dynamic fragments
Bug: 148969800
Test: gw cAT
Change-Id: Ie03d9ed0b21b854d6595c0208ce23a4c13294273
M navigation/navigation-dynamic-features-fragment/api/2.3.0-alpha06.txt
M navigation/navigation-dynamic-features-fragment/api/current.txt
M navigation/navigation-dynamic-features-fragment/api/public_plus_experimental_2.3.0-alpha06.txt
M navigation/navigation-dynamic-features-fragment/api/public_plus_experimental_current.txt
M navigation/navigation-dynamic-features-fragment/api/restricted_2.3.0-alpha06.txt
M navigation/navigation-dynamic-features-fragment/api/restricted_current.txt
M navigation/navigation-dynamic-features-fragment/src/androidTest/java/androidx/navigation/dynamicfeatures/fragment/DynamicFragmentNavigatorDestinationBuilderTest.kt
M navigation/navigation-dynamic-features-fragment/src/main/java/androidx/navigation/dynamicfeatures/fragment/DynamicFragmentNavigatorDestinationBuilder.kt
ap...@google.com <ap...@google.com> #10
Branch: androidx-master-dev
commit 5aa702c7dc0b2888fcc051f6777e56c3d2397e5c
Author: Ian Lake <ilake@google.com>
Date: Wed Apr 22 14:54:47 2020
Add includeDynamic Builder
Allow developers to add include-dynamic destinations
via the Kotlin DSL.
Bug: 148969800
Test: cAT
Change-Id: Ic92a2201cc44526174b65ca433433d1dc169543f
M navigation/navigation-dynamic-features-runtime/api/2.3.0-alpha06.txt
M navigation/navigation-dynamic-features-runtime/api/current.txt
M navigation/navigation-dynamic-features-runtime/api/public_plus_experimental_2.3.0-alpha06.txt
M navigation/navigation-dynamic-features-runtime/api/public_plus_experimental_current.txt
M navigation/navigation-dynamic-features-runtime/api/restricted_2.3.0-alpha06.txt
M navigation/navigation-dynamic-features-runtime/api/restricted_current.txt
A navigation/navigation-dynamic-features-runtime/src/androidTest/java/androidx/navigation/dynamicfeatures/DynamicIncludeNavGraphBuilderTest.kt
M navigation/navigation-dynamic-features-runtime/src/main/java/androidx/navigation/dynamicfeatures/DynamicIncludeGraphNavigator.kt
A navigation/navigation-dynamic-features-runtime/src/main/java/androidx/navigation/dynamicfeatures/DynamicIncludeNavGraphBuilder.kt
ap...@google.com <ap...@google.com> #11
Branch: androidx-master-dev
commit a386c72b7b40597559c8eecb3907ec6a1dedf3b0
Author: Ian Lake <ilake@google.com>
Date: Wed Apr 22 16:31:37 2020
Limit Dynamic Kotlin DSL to DynamicNavGraphBuilder
Dynamic Destinations need to be placed inside
a DynamicNavGraph to function properly, so we
should limit the Dynamic Kotlin DSLs to only
apply to that DynamicNavGraphBuilder scope, rather
than to any Kotlin DSL.
Test: tests still pass
BUG: 148969800
Change-Id: Ia9b54f60f19dcadc617201e582abaca51c097e78
M navigation/navigation-dynamic-features-fragment/api/2.3.0-alpha06.txt
M navigation/navigation-dynamic-features-fragment/api/current.txt
M navigation/navigation-dynamic-features-fragment/api/public_plus_experimental_2.3.0-alpha06.txt
M navigation/navigation-dynamic-features-fragment/api/public_plus_experimental_current.txt
M navigation/navigation-dynamic-features-fragment/api/restricted_2.3.0-alpha06.txt
M navigation/navigation-dynamic-features-fragment/api/restricted_current.txt
M navigation/navigation-dynamic-features-fragment/src/main/java/androidx/navigation/dynamicfeatures/fragment/DynamicFragmentNavigatorDestinationBuilder.kt
M navigation/navigation-dynamic-features-runtime/api/2.3.0-alpha06.txt
M navigation/navigation-dynamic-features-runtime/api/current.txt
M navigation/navigation-dynamic-features-runtime/api/public_plus_experimental_2.3.0-alpha06.txt
M navigation/navigation-dynamic-features-runtime/api/public_plus_experimental_current.txt
M navigation/navigation-dynamic-features-runtime/api/restricted_2.3.0-alpha06.txt
M navigation/navigation-dynamic-features-runtime/api/restricted_current.txt
M navigation/navigation-dynamic-features-runtime/src/main/java/androidx/navigation/dynamicfeatures/DynamicActivityNavigatorDestinationBuilder.kt
M navigation/navigation-dynamic-features-runtime/src/main/java/androidx/navigation/dynamicfeatures/DynamicIncludeNavGraphBuilder.kt
ap...@google.com <ap...@google.com> #12
Branch: androidx-master-dev
commit 74f1b7591f549e471dd86e23c43a6f0a04d128d4
Author: Ian Lake <ilake@google.com>
Date: Wed Apr 22 17:01:14 2020
Move optional parameters to be DSL variables
Instead of requiring that you define optional
parameters when constructing the DynamicNavGraph,
make them part of the DSL to mirror what we do
for the other builders.
This also fixes an issue with the progress
destination of 0 on restore.
Test: updated tests pass
BUG: 148969800
Change-Id: I2e897711da375e11e14dab5acf9c5117b38b63f3
M navigation/navigation-dynamic-features-runtime/api/2.3.0-alpha06.txt
M navigation/navigation-dynamic-features-runtime/api/current.txt
M navigation/navigation-dynamic-features-runtime/api/public_plus_experimental_2.3.0-alpha06.txt
M navigation/navigation-dynamic-features-runtime/api/public_plus_experimental_current.txt
M navigation/navigation-dynamic-features-runtime/api/restricted_2.3.0-alpha06.txt
M navigation/navigation-dynamic-features-runtime/api/restricted_current.txt
M navigation/navigation-dynamic-features-runtime/src/androidTest/java/androidx/navigation/dynamicfeatures/DynamicNavGraphBuilderTest.kt
M navigation/navigation-dynamic-features-runtime/src/main/java/androidx/navigation/dynamicfeatures/DynamicNavGraphBuilder.kt
M navigation/navigation-dynamic-features-runtime/src/main/java/androidx/navigation/dynamicfeatures/NavController.kt
M navigation/navigation-dynamic-features-runtime/src/main/java/androidx/navigation/dynamicfeatures/NavHost.kt
il...@google.com <il...@google.com> #13
We've made significant improvements to the Kotlin DSL support for Dynamic Navigation and it'll be available in Navigation 2.3.0-alpha06.
lo...@gmail.com <lo...@gmail.com> #14
Is there any documentation to discover the changes?
Description
Component used: Navigation Version used: 2.3.0-alpha01
Currently, the Navigation Kotlin DSL only allows you to add NavGraph, FragmentNavigator.Destination, and other non-dynamic feature module aware destinations.
A parallel set of DSL extensions should be built to allow dynamic feature module destinations to easily be added to the Kotlin DSL. These would be distinguished from the others by the package name of the import.