Status Update
Comments
vi...@google.com <vi...@google.com>
jb...@google.com <jb...@google.com>
lc...@gmail.com <lc...@gmail.com> #2
Oh I forgot to mention that I thought it might be connected to this issue:
lc...@gmail.com <lc...@gmail.com> #3
Please provide a minimal sample project along with the minimal steps to recreate the issue in the project.
cl...@gmail.com <cl...@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:
il...@google.com <il...@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.
an...@gmail.com <an...@gmail.com> #6
This has been fixed and will be available in navigation 2.6.0-alpha08
lc...@gmail.com <lc...@gmail.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
sp...@google.com <sp...@google.com>
mi...@google.com <mi...@google.com>
mi...@google.com <mi...@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
Description
Navigation recently added support for providing intent actions and mimeTypes to nav deep links.
The manifest merger does not currently have the logic needed to consider these fields when generating the intent filters. That logic should be added.
If the custom action in the navigation xml is not an empty string, its value should replace the default
android.intent.action.VIEW
in the intent filter's<action android:name>
element. If the action is an empty string, the<action android:name>
element should be removed.If the navigation xml is provided with a mimeType, its value should be added to the intent filter in an
<data android:mimeType>
element.Here are some basic examples:
The deep link is given a custom intent action in the navigation xml:
<deepLink app:action=”android.intent.action.MY_ACTION”/>
It should be converted to the following intent filter:
The deep link is given a mimeType in the navigation xml:
<deepLink app:mimeType=”image/jpg”/>
It should be converted to the following intent filter:
To see more details and examples, take a look at the design doc .