Fixed
Status Update
Comments
da...@gmail.com <da...@gmail.com> #2
This was fixed in https://android-review.googlesource.com/880833 and will be available in Navigation 1.0.0-alpha10.
il...@google.com <il...@google.com> #3
You should be using childFragmentManager, not requireFragmentManager(). As of Alpha 04 and https://issuetracker.google.com/issues/111345778 , back button presses are automatically passed to the child FragmentManager of the active Fragment, allowing you to do whatever FragmentTransactions you want in that child FragmentManager (using Navigation or not).
We can improve the error message though.
We can improve the error message though.
da...@gmail.com <da...@gmail.com> #4
Ah, of course I should....
shame on me.
Improving the error message will surely help fools like me :) thanks
shame on me.
Improving the error message will surely help fools like me :) thanks
il...@google.com <il...@google.com>
il...@google.com <il...@google.com> #5
We've added a better error message in https://android-review.googlesource.com/861401 and this will be available in 1.0.0-alpha10.
Description
Version used: 1.0.0-alpha05
Devices/Android versions reproduced on: Pixel 2 (Pie) / Emulator Nougat / Pie
I Stumbled on this stacktrace in a project that use the new navigation component:
java.lang.NumberFormatException: For input string: "TRANSACTION_NAME"
at java.lang.Integer.parseInt(Integer.java:615)
at java.lang.Integer.valueOf(Integer.java:801)
at androidx.navigation.fragment.FragmentNavigator.isBackStackEqual(FragmentNavigator.java:252)
at androidx.navigation.fragment.FragmentNavigator$1.onBackStackChanged(FragmentNavigator.java:83)
at androidx.fragment.app.FragmentManagerImpl.reportBackStackChanged(FragmentManager.java:2733)
at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2439)
at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2372)
at androidx.fragment.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:884)
at androidx.fragment.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:827)
at androidx.fragment.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:874)
at androidx.fragment.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:827)
at androidx.fragment.app.FragmentActivity.onBackPressed(FragmentActivity.java:190)
at android.app.Activity.onKeyUp(Activity.java:3082)
In one of my fragment I manage an internal fragment transaction
requireFragmentManager().beginTransaction()
.addToBackStack("TRANSACTION_NAME")
.commit()
from the fragment doing this I navigate to another using the nav graph and when i press back that stack trace pop up and the app crashes.
If i use navController.navigateUp() nothing happens.
Looking in the code of FragmentNavigator I see
Integer.valueOf(mFragmentManager
.getBackStackEntryAt(fragmentBackStackIndex--)
.getName())
apparently you assume any back stack entry name is an integer.
Is this a design decision? Does that means I can't use fragment transactions on my own if I use the navigation component?
I honestly only use this to detect the user pressing back in my fragment without having to rely on the activity forwarding the information cause I have an overlay view on top of my fragment that is supposed to go away when the user press back and I don't have an `onBackPressed()` on the fragment.