Status Update
Comments
il...@google.com <il...@google.com>
il...@google.com <il...@google.com> #2
Oh I forgot to mention that I thought it might be connected to this issue:
ap...@google.com <ap...@google.com> #3
Please provide a minimal sample project along with the minimal steps to recreate the issue in the project.
il...@google.com <il...@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:
Description
Component used: Navigation Safe Args Kotlin Plugin
Version used: 2.4.0-alpha02, AGP 4.2.0-beta03
After upgrading to Navigation 2.4.0-alpha02 and building a minified version of my app , my app crashed with an exception that said that the
fromBundle
method couldn't be found.I use the
by navArgs()
extension, which uses reflection to access this method, so I depended on Navigation's included ProGuard keep rules to properly keep that method.I found that I could work around this issue via this commit :
Essentially just making sure that the
Companion
class is kept. After adding that ProGuard rule, thefromBundle()
class was successfully kept. I'm not sure why that helped, since I'm pretty sure that the format of thefromBundle()
didn't change since Navigation 2.3.5?Reproduction steps:
minifyEnabled true
to the./gradlew assembleDebug
and analyze the resulting APK to verify that theChooseProviderFragmentArgs.fromBundle()
method exists (it won't) 4a) Alternatively, install Muzei, Activate it as your wallpaper, then select the 'Sources' screen. Muzei should not crash.