Status Update
Comments
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:
jb...@google.com <jb...@google.com> #3
Please provide a minimal sample project along with the minimal steps to recreate the issue in the project.
jb...@google.com <jb...@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.
mo...@gmail.com <mo...@gmail.com> #6
This has been fixed and will be available in navigation 2.6.0-alpha08
ah...@gmail.com <ah...@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
il...@google.com <il...@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
ma...@zentity.com <ma...@zentity.com> #9
Still persist in 2.6.0. From Crashlytics report:
Fatal Exception: java.lang.IllegalArgumentException: The fragment MyFragment{e08e9e3} (ffd3a63d-e7c5-4d27-8836-9579f2aea852 id=0x7f0a03a2 tag=0dcc6840-37be-40d3-9aab-10a5381ca884) is unknown to the FragmentNavigator. Please use the navigate() function to add fragments to the FragmentNavigator managed FragmentManager.
at androidx.navigation.fragment.FragmentNavigator$onAttach$2.onBackStackChangeCommitted(FragmentNavigator.kt:143)
at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1918)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1845)
at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1782)
at androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:565)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7879)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1009)
MyFragment is in main fragment for subgraph which is included to nav_graph.xml.
ma...@zentity.com <ma...@zentity.com> #11
Re
ti...@persgroep.net <ti...@persgroep.net> #12
Please re-open.
Issue still persists.
I can reproduce the issue in a private project.
Issue is introduced between 2.6.0-alpha09 and 2.6.0-beta01
We navigate using the navigator#navigate(route: String, navOptions: NavOptions? = null, navigatorExtras: Navigator.Extras? = null)
After a callback from BottomNavigationView#setOnItemSelectedListener { }
pe...@gmail.com <pe...@gmail.com> #13
Issue still persists.
Issue is introduced version 2.6.0
java.lang.IllegalArgumentException: The fragment Fragment{fc34355} (39232ee3-331e-46a0-af93-ba6b5333073c id=0x7f0a0080 tag=221aaf28-4a64-4790-8a9d-982050604bf8) is unknown to the FragmentNavigator. Please use the navigate() function to add fragments to the FragmentNavigator managed FragmentManager.
at androidx.navigation.fragment.FragmentNavigator$onAttach$2.onBackStackChangeCommitted(FragmentNavigator.kt:143)
at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1918)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1845)
at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1782)
at androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:565)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:226)
at android.os.Looper.loop(Looper.java:313)
at android.app.ActivityThread.main(ActivityThread.java:8757)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067)
ma...@gmail.com <ma...@gmail.com> #14
I have this problem as well in PreferenceScreen, when using 2.6.0, no problems in 2.5.3.
I expected it to be able to use "app:fragment=" parameter to navigate when clicking on the preference.While it showed this errors.
java.lang.IllegalArgumentException: The fragment LibrarySettingsNavFragment{e8a45e3} (e3ae8f01-4d4b-4f1f-8fd1-df0fb58c3764 id=0x7f0a040d) is unknown to the FragmentNavigator. Please use the navigate() function to add fragments to the FragmentNavigator managed FragmentManager.
at androidx.navigation.fragment.FragmentNavigator$onAttach$2.onBackStackChangeCommitted(FragmentNavigator.kt:143)
at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1918)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1839)
at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1782)
at androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:565)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7872)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
il...@google.com <il...@google.com> #15
Re
You might consider using OnPreferenceStartFragmentCallback
ma...@gmail.com <ma...@gmail.com> #16
Re onPreferenceStartFragment is not implemented...
)
I will consider the new approach you have brought up. Thanks for the reply and the information!
ap...@google.com <ap...@google.com> #17
Branch: androidx-main
commit f61da31809827bfac89af629c88ad9b8423e88b6
Author: Clara Fok <clarafok@google.com>
Date: Wed Sep 06 14:14:11 2023
Fix entry not marked complete after view is destroyed
As part of a fix for
Now the backstack check in ON_DESTROY is no longer necessary to fix the original
Test: ./gradlew navigation:navigation-fragment:cC
Test: ./gradlew navigation:navigation-runtime:cC
Bug: 288520638
Change-Id: I5caa9af1b5bd7084e76d7daf9515f7430bf2489d
M navigation/navigation-fragment/src/androidTest/java/androidx/navigation/fragment/FragmentNavigatorTest.kt
M navigation/navigation-fragment/src/androidTest/java/androidx/navigation/fragment/NavControllerWithFragmentTest.kt
M navigation/navigation-fragment/src/main/java/androidx/navigation/fragment/FragmentNavigator.kt
M navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavControllerTest.kt
M navigation/navigation-runtime/src/main/java/androidx/navigation/NavController.kt
na...@google.com <na...@google.com> #18
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.navigation:navigation-fragment:2.7.3
androidx.navigation:navigation-runtime:2.7.3
pa...@gmail.com <pa...@gmail.com> #19
jb...@google.com <jb...@google.com> #20
Please file an issue with a minimal sample project that reproduces your issue with 2.7.3.
pa...@gmail.com <pa...@gmail.com> #21
be...@gmail.com <be...@gmail.com> #22
dieser Fehler tritt bei mir auf wenn ich .beginTransaction().addToBackStack(null) hinzufüge.
Vielleicht hilft das bei der Fehlersuche.
Gruß Wauzi
sa...@googlemail.com <sa...@googlemail.com> #23
ro...@gmail.com <ro...@gmail.com> #24
lo...@gmail.com <lo...@gmail.com> #25
Still facing this issue with 2.7.4
tp...@fundrise.com <tp...@fundrise.com> #26
vi...@gmail.com <vi...@gmail.com> #27
ag...@gmail.com <ag...@gmail.com> #28
ad...@gmail.com <ad...@gmail.com> #29
na...@google.com <na...@google.com> #30
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.navigation:navigation-fragment:2.8.0-alpha01
androidx.navigation:navigation-runtime:2.8.0-alpha01
an...@nine-yi.com <an...@nine-yi.com> #31
ex : findNavController().navigate(HomeFragmentDirections.actionHomeFragmentToNavSearch())
ne...@novo.co <ne...@novo.co> #32
Using the below library version and getting the same issue.
Fatal Exception: java.lang.IllegalArgumentException The fragment QuestionsFragment{c0772b4} (a73d416f-c5b6-444c-add0-8e1b5d151331 id=0x7f0a0cf4 tag=22f1b453-8116-4697-ae6b-3dffab63b52c) is unknown to the FragmentNavigator. Please use the navigate() function to add fragments to the FragmentNavigator managed FragmentManager.
androidx.navigation:navigation-fragment-ktx:2.7.7
androidx.navigation:navigation-ui-ktx:2.7.7
al...@gmail.com <al...@gmail.com> #33
Is navigation 2.8.0 going to be released soon?
wr...@gmail.com <wr...@gmail.com> #34
Using the below library version and getting the same issue.
Fatal Exception: java.lang.RuntimeException: Unable to pause activity {com.yenaly.han1meviewer/com.yenaly.han1meviewer.ui.activity.MainActivity}: java.lang.IllegalArgumentException: The fragment DownloadFragment{7c97732} (b82e8cc8-7667-4bb5-9fba-6afb0477513d) is unknown to the FragmentNavigator. Please use the navigate() function to add fragments to the FragmentNavigator managed FragmentManager.
at android.app.ActivityThread.performPauseActivityIfNeeded(ActivityThread.java:5711)
at android.app.ActivityThread.performPauseActivity(ActivityThread.java:5662)
at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:5614)
at android.app.servertransaction.PauseActivityItem.execute(PauseActivityItem.java:55)
at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:185)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2724)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:255)
at android.os.Looper.loop(Looper.java:364)
at android.app.ActivityThread.main(ActivityThread.java:8979)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:572)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1053)
Caused by java.lang.IllegalArgumentException: The fragment DownloadFragment{7c97732} (b82e8cc8-7667-4bb5-9fba-6afb0477513d) is unknown to the FragmentNavigator. Please use the navigate() function to add fragments to the FragmentNavigator managed FragmentManager.
at androidx.navigation.fragment.FragmentNavigator$onAttach$2.onBackStackChangeCommitted(FragmentNavigator.kt:208)
at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2185)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2112)
at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:2049)
at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3324)
at androidx.fragment.app.FragmentManager.dispatchPause(FragmentManager.java:3252)
at androidx.fragment.app.Fragment.performPause(Fragment.java:3323)
at androidx.fragment.app.FragmentStateManager.pause(FragmentStateManager.java:692)
at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:318)
at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:114)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1684)
at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3316)
at androidx.fragment.app.FragmentManager.dispatchPause(FragmentManager.java:3252)
at androidx.fragment.app.FragmentController.dispatchPause(FragmentController.java:296)
at androidx.fragment.app.FragmentActivity.onPause(FragmentActivity.java:284)
at android.app.Activity.performPause(Activity.java:8986)
at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1676)
at android.app.ActivityThread.performPauseActivityIfNeeded(ActivityThread.java:5701)
at android.app.ActivityThread.performPauseActivity(ActivityThread.java:5662)
at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:5614)
at android.app.servertransaction.PauseActivityItem.execute(PauseActivityItem.java:55)
at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:185)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2724)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:255)
at android.os.Looper.loop(Looper.java:364)
at android.app.ActivityThread.main(ActivityThread.java:8979)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:572)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1053)
androidx.navigation:navigation-fragment-ktx:2.8.2
androidx.navigation:navigation-ui-ktx:2.8.2
il...@google.com <il...@google.com> #35
Re
Description
Component used: Navigation
Version used: 2.6.0-beta01, 2.6.0-SNAPSHOT
Devices/Android versions reproduced on: All devices
Related issue https://issuetracker.google.com/issues/279306628
Project has 1 main graph that includes 3 sub nav graphs, each sub graph with a single fragment with a button.
Navigation flow.
Crash doesn't occur 2.6.0-alpha09 and below. Or if navigation doesn't happen within onResume callback by moving navigation call to button click.
Scenario is the top level fragment triggered a fragment result state back to bottom fragment after performing some business logics.