Status Update
Comments
ya...@gmail.com <ya...@gmail.com> #2
Oh I forgot to mention that I thought it might be connected to this issue:
il...@google.com <il...@google.com>
br...@gmail.com <br...@gmail.com> #3
Please provide a minimal sample project along with the minimal steps to recreate the issue in the project.
br...@gmail.com <br...@gmail.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.
Description
Version used: 2.1.0 alpha 05
Deep links with arguments that are enum types are not recognized and parsed unless the casing in the deeplink is an exact match to the enum. This may not be feasible to fix/add, but wanted to bring it up just in case.
consider an example where I have an enum like so
enum class Colors {
RED,
BLUE,
GREEN
}
And a destination with an argument that takes a Colors, and supports a deeplink
<argument
android:name="destColor"
app:argType="com.my.app.Colors"
android:defaultValue="RED" />
<deepLink
app:uri="
The deeplink will only work if the color is correctly cased:
And the following will NOT work:
Granted, paths in URI's are by rule considered to be case-sensitive, so
It would be nice if perhaps when setting up a destination argument of an enum type (or maybe when defining a deep link) we had the option to specify that a deeplink should or should not match based on case-sensitivity. Of course, there's still the challenge of parsing "red" to Colors.RED when processing the deep link arguments.