Status Update
Comments
ap...@google.com <ap...@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.
ap...@google.com <ap...@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:
jb...@google.com <jb...@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.
ap...@google.com <ap...@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: snap-temp-L31300000699869852
commit ae16020f57114d8e9f07544dc57e9c00c4153d26
Author: Jeremy Woods <jbwoods@google.com>
Date: Fri Sep 11 15:58:27 2020
Add nav default animator resources
Animators are recommeneded over Animations for doing effects in fragment
and Navigation. We need to make default animator resources for
Navigation.
Test: Tested in sample apps
Bug: 167430145
Change-Id: I904d78268d8b8574c799ae1b0f5887e518fdb5f6
(cherry picked from commit 1e9ed84322fddd9228df1f96bc8cb76748e0a4fe)
M navigation/navigation-ui/src/main/java/androidx/navigation/ui/NavigationUI.java
M navigation/navigation-ui/src/main/res-public/values/public_anim.xml
A navigation/navigation-ui/src/main/res/animator/nav_default_enter_anim.xml
A navigation/navigation-ui/src/main/res/animator/nav_default_exit_anim.xml
A navigation/navigation-ui/src/main/res/animator/nav_default_pop_enter_anim.xml
A navigation/navigation-ui/src/main/res/animator/nav_default_pop_exit_anim.xml
ap...@google.com <ap...@google.com> #10
Branch: snap-temp-L53700000699921463
commit adb93346bcf4e8b019ec009e499e85536c223415
Author: Jeremy Woods <jbwoods@google.com>
Date: Fri Sep 11 15:58:27 2020
Add nav default animator resources
Animators are recommeneded over Animations for doing effects in fragment
and Navigation. We need to make default animator resources for
Navigation.
Test: Tested in sample apps
Bug: 167430145
Change-Id: I904d78268d8b8574c799ae1b0f5887e518fdb5f6
(cherry picked from commit 1e9ed84322fddd9228df1f96bc8cb76748e0a4fe)
M navigation/navigation-ui/src/main/java/androidx/navigation/ui/NavigationUI.java
M navigation/navigation-ui/src/main/res-public/values/public_anim.xml
A navigation/navigation-ui/src/main/res/animator/nav_default_enter_anim.xml
A navigation/navigation-ui/src/main/res/animator/nav_default_exit_anim.xml
A navigation/navigation-ui/src/main/res/animator/nav_default_pop_enter_anim.xml
A navigation/navigation-ui/src/main/res/animator/nav_default_pop_exit_anim.xml
ap...@google.com <ap...@google.com> #11
Branch: snap-temp-L25200000699921867
commit 868747fcf7ed98039c7a75125a540b348e1b8e9f
Author: Jeremy Woods <jbwoods@google.com>
Date: Fri Sep 11 15:58:27 2020
Add nav default animator resources
Animators are recommeneded over Animations for doing effects in fragment
and Navigation. We need to make default animator resources for
Navigation.
Test: Tested in sample apps
Bug: 167430145
Change-Id: I904d78268d8b8574c799ae1b0f5887e518fdb5f6
(cherry picked from commit 1e9ed84322fddd9228df1f96bc8cb76748e0a4fe)
M navigation/navigation-ui/src/main/java/androidx/navigation/ui/NavigationUI.java
M navigation/navigation-ui/src/main/res-public/values/public_anim.xml
A navigation/navigation-ui/src/main/res/animator/nav_default_enter_anim.xml
A navigation/navigation-ui/src/main/res/animator/nav_default_exit_anim.xml
A navigation/navigation-ui/src/main/res/animator/nav_default_pop_enter_anim.xml
A navigation/navigation-ui/src/main/res/animator/nav_default_pop_exit_anim.xml
ap...@google.com <ap...@google.com> #12
Branch: snap-temp-L07700000699933785
commit 57ed08fa1034139dbb2bbabd6d4b87299481bd4a
Author: Jeremy Woods <jbwoods@google.com>
Date: Fri Sep 11 15:58:27 2020
Add nav default animator resources
Animators are recommeneded over Animations for doing effects in fragment
and Navigation. We need to make default animator resources for
Navigation.
Test: Tested in sample apps
Bug: 167430145
Change-Id: I904d78268d8b8574c799ae1b0f5887e518fdb5f6
(cherry picked from commit 1e9ed84322fddd9228df1f96bc8cb76748e0a4fe)
M navigation/navigation-ui/src/main/java/androidx/navigation/ui/NavigationUI.java
M navigation/navigation-ui/src/main/res-public/values/public_anim.xml
A navigation/navigation-ui/src/main/res/animator/nav_default_enter_anim.xml
A navigation/navigation-ui/src/main/res/animator/nav_default_exit_anim.xml
A navigation/navigation-ui/src/main/res/animator/nav_default_pop_enter_anim.xml
A navigation/navigation-ui/src/main/res/animator/nav_default_pop_exit_anim.xml
Description
The current Navigation default effects are not only this one ) that do not happen when using
Animations
, but they are also inside of sets. This causes issues (likeAnimator
,Transition
, orAndroidx Transition
.Animator
was built as a follow up toAnimation
, specifically to handle its short comings. We should be usingAnimator
as our default effects instead ofAnimation
.Because these resources are part of the public API and we don't want to remove or change their directory, we will attempt to have them remain in the same
R.anim
res location, and just change their underlying implementation.