Status Update
Comments
il...@google.com <il...@google.com>
cl...@google.com <cl...@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.
cl...@google.com <cl...@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:
na...@google.com <na...@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.
na...@google.com <na...@google.com> #6
This has been fixed and will be available in navigation 2.6.0-alpha08
Description
Component used: Navigation
Version used:
If this is a bug in the library, we would appreciate if you could attach:
Issue:
Hi, I just encountered a weird behaviour which can be reproduced every time. My setup looks like this, Single Activity with Compose Navigation, some screens are locked to portrait orientation, some can be used in every orientation, e.g. to display images or videos.
Orientation is set like this while navigating:
ScreenA
is locked to portrait,ScreenB
can be used in every orientation. IfScreenB
is used in landscape mode, while navigating back an orientation change is requested which leads to activity recreation. I think because of the activity recreationScreenBViewModel.onCleared
is not called...How to reproduce?
ScreenBViewModel.onCleared
is not calledYou can just search the logs for "ScreenBViewModel", an info gets logged for init and onCleared of
ScreenBViewModel
. IfScreenB
doesn't change its orientationonCleared
is called as expected.Expected behaviour:
For step 5
ScreenBViewModel.onCleared
is calledDo you have any recommendations for a temporary workaround or any suggestions how orientation changes can be forced without losing the
onCleared
call?Let me know if you need more info.
Best regards ✌️