Status Update
Comments
il...@google.com <il...@google.com>
il...@google.com <il...@google.com>
ap...@google.com <ap...@google.com> #2
Oh I forgot to mention that I thought it might be connected to this issue:
cl...@google.com <cl...@google.com> #3
Please provide a minimal sample project along with the minimal steps to recreate the issue in the project.
st...@gmail.com <st...@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:
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.
Description
Component used: Navigation Version used: 2.4 Devices/Android versions reproduced on: all
AppCompatActivity::setupActionBarWithNavController
can be called to automatically update app bar content when navigation destination changes. In particular,setupActionBarWithNavController
promises to automatically hide the Up arrow for "top-level" destinations and show the Up arrow for all other destinations. To achieve this,setupActionBarWithNavController
needs to infer or be told which destinations are "top-level".When using a
BottomNavigationView
, I wantedI tried calling
setupActionBarWithNavController
and passing a customAppBarConfiguration
constructed using theMenu
instance from theBottomNavigationView
:Unfortunately, when passed a
Menu
whose entries correspond to navigation graph IDs,AppBarConfiguration::Builder
sets the graph IDs as top-level destination IDs, rather than the setting the graph start destination IDs as top-level destination IDs. The result is that theAbstractAppBarOnDestinationChangedListener
applied bysetupActionBarWithNavController
mistakenly classifies every destination as top-level and no screens have an Up arrow.This can be worked around by explicitly passing the IDs of the start destinations of each tab's graph when constructing the
AppBarConfiguration
builder:However, the behavior of
AppBarConfiguration.Builder(Menu)
remains surprising and it would be good to investigate whether that constructor could be made to behave as I anticipated!Android Study Group Slack thread:https://androidstudygroup.slack.com/archives/CAZCL8AVB/p1656470310000929?thread_ts=1655997032.467509&cid=CAZCL8AVB