Status Update
Comments
jo...@linkedin.com <jo...@linkedin.com> #2
Oh I forgot to mention that I thought it might be connected to this issue:
il...@google.com <il...@google.com> #3
Please provide a minimal sample project along with the minimal steps to recreate the issue in the project.
jo...@linkedin.com <jo...@linkedin.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.
jb...@google.com <jb...@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
di...@gal-digital.de <di...@gal-digital.de> #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
jb...@google.com <jb...@google.com> #9
This has been fixed internally and will be available as part of the Navigation 2.4.0-alpha06
release.
Description
Component used: Navigation Compose
Version used: 2.4.0-alpha05
Devices/Android versions reproduced on: Pixel 5, SDK 31
I have an
Activity
which displays a screen with a button (ComposableA
) and when I tap on the button, I want to display another screen (ComposableB
). When I tap back onComposableB
, I don't want to go back to theComposableA
, instead I want to close the app.My understanding was that I could do it like this:
When I tap the button,
ComposableB
appears for a brief moment, but then the app crashes with the following stack trace (see below). When I remove theinclusive = true
(or when I set it tofalse
) the app doesn't crash, but then tapping the phone's back button takes me back toComposableA
. I don't want – I want the app to close when I tap back. Think ofComposableA
as just a login screen.I can't figure out what am I doing wrong. I was following this documentation . I feel like this could be a bug in Navigation or Compose.
These are my build.gradle files, if that helps: