Fixed
Status Update
Comments
lp...@google.com <lp...@google.com> #2
Project: platform/frameworks/support
Branch: androidx-main
commit b17204359581a71c427d7519a6cfc1825141ed72
Author: Jeremy Woods <jbwoods@google.com>
Date: Fri Mar 17 21:47:24 2023
Prevent crash when adding unmanaged fragment in nav
Currently, if you attempt to add a fragment to the fragment manager
associated with the FragmentNavigator, navigation crashes as it cannot
find an entry associated with fragment.
While it is strongly recommended to only use navigation APIs to
manipulate the fragment manager, if the back stack is not affected, then
we should not crash.
RelNote: "Adding fragments to the `FragmentNavigator`'s
`FragmentManager` without using navigation will no longer crash."
Test: Added FragmentNavigatorTest
Bug: 274167493
Change-Id: I47d4c75ca46ee7f8282b2a7b97d28d71edd9a07b
M navigation/navigation-fragment/src/androidTest/java/androidx/navigation/fragment/FragmentNavigatorTest.kt
M navigation/navigation-fragment/src/main/java/androidx/navigation/fragment/FragmentNavigator.kt
https://android-review.googlesource.com/2496343
Branch: androidx-main
commit b17204359581a71c427d7519a6cfc1825141ed72
Author: Jeremy Woods <jbwoods@google.com>
Date: Fri Mar 17 21:47:24 2023
Prevent crash when adding unmanaged fragment in nav
Currently, if you attempt to add a fragment to the fragment manager
associated with the FragmentNavigator, navigation crashes as it cannot
find an entry associated with fragment.
While it is strongly recommended to only use navigation APIs to
manipulate the fragment manager, if the back stack is not affected, then
we should not crash.
RelNote: "Adding fragments to the `FragmentNavigator`'s
`FragmentManager` without using navigation will no longer crash."
Test: Added FragmentNavigatorTest
Bug: 274167493
Change-Id: I47d4c75ca46ee7f8282b2a7b97d28d71edd9a07b
M navigation/navigation-fragment/src/androidTest/java/androidx/navigation/fragment/FragmentNavigatorTest.kt
M navigation/navigation-fragment/src/main/java/androidx/navigation/fragment/FragmentNavigator.kt
lp...@google.com <lp...@google.com> #3
This has been fixed internally and will be in the Navigation 2.6.0-alpha08
release.
ma...@gmail.com <ma...@gmail.com> #4
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.navigation:navigation-fragment:2.6.0-alpha08
jb...@google.com <jb...@google.com> #5
Since the
Please file a bug against Fragments the with a sample project that reproduces this issue and we will be happy to take a look at what's going on.
ma...@gmail.com <ma...@gmail.com> #6
I can confirm that using fragment 1.2.2 resolves the issue, thank you!
Without an explicit dependency declaration version 1.1.0 was still used (transient dependency of appcompat 1.1.0).
Without an explicit dependency declaration version 1.1.0 was still used (transient dependency of appcompat 1.1.0).
Description
PreferenceFragmentCompat sets this adapter (PreferenceGroupAdapter), which implicitly registers an observer. PreferenceFragmentCompat never sets the adapter to null when the view is destroyed, so the observer keeps references to the RecyclerView and doesn't get gc'ed.
I've worked around this by explicitly setting the adapter to null in an override of onDestroyView, but since my component doesn't explicitly have ownership of the list handling, I'd argue that PreferenceFragmentCompat should do this cleanup.
It would be solved by setting the RecyclerView adapter to null in the fragment's onDestroyView.
Here's a memory dump.