Fixed
Status Update
Comments
ap...@google.com <ap...@google.com> #2
Project: platform/frameworks/support
Branch: androidx-main
commit 971988516cc42805cc2f1f35ea25bc29dcd22508
Author: Simon Schiller <simonschiller@users.noreply.github.com>
Date: Tue Mar 23 17:04:29 2021
[GH] [FragmentStrictMode] Detect Fragment reuse
## Proposed Changes
- Detect reuse of `Fragment` instances
## Testing
Test: See `FragmentStrictModeTest#detectFragmentReuse` and `FragmentStrictModeTest#detectFragmentReuseInFlightTransaction`
## Issues Fixed
Fixes: 153738653
This is an imported pull request fromhttps://github.com/androidx/androidx/pull/142 .
Resolves #142
Github-Pr-Head-Sha: d9bcea29b0c2bd37a42fad5d0a4b7aa141a210e3
GitOrigin-RevId: c54931ff34681e31be294085a5068257c5d0fead
Change-Id: Ie6bc7618c3dde8df027be1940cfb95970d9578a4
M fragment/fragment/api/public_plus_experimental_current.txt
M fragment/fragment/api/restricted_current.txt
M fragment/fragment/src/androidTest/java/androidx/fragment/app/strictmode/FragmentStrictModeTest.kt
M fragment/fragment/src/main/java/androidx/fragment/app/Fragment.java
M fragment/fragment/src/main/java/androidx/fragment/app/FragmentManager.java
M fragment/fragment/src/main/java/androidx/fragment/app/FragmentTransaction.java
A fragment/fragment/src/main/java/androidx/fragment/app/strictmode/FragmentReuseViolation.java
M fragment/fragment/src/main/java/androidx/fragment/app/strictmode/FragmentStrictMode.java
https://android-review.googlesource.com/1649749
Branch: androidx-main
commit 971988516cc42805cc2f1f35ea25bc29dcd22508
Author: Simon Schiller <simonschiller@users.noreply.github.com>
Date: Tue Mar 23 17:04:29 2021
[GH] [FragmentStrictMode] Detect Fragment reuse
## Proposed Changes
- Detect reuse of `Fragment` instances
## Testing
Test: See `FragmentStrictModeTest#detectFragmentReuse` and `FragmentStrictModeTest#detectFragmentReuseInFlightTransaction`
## Issues Fixed
Fixes: 153738653
This is an imported pull request from
Resolves #142
Github-Pr-Head-Sha: d9bcea29b0c2bd37a42fad5d0a4b7aa141a210e3
GitOrigin-RevId: c54931ff34681e31be294085a5068257c5d0fead
Change-Id: Ie6bc7618c3dde8df027be1940cfb95970d9578a4
M fragment/fragment/api/public_plus_experimental_current.txt
M fragment/fragment/api/restricted_current.txt
M fragment/fragment/src/androidTest/java/androidx/fragment/app/strictmode/FragmentStrictModeTest.kt
M fragment/fragment/src/main/java/androidx/fragment/app/Fragment.java
M fragment/fragment/src/main/java/androidx/fragment/app/FragmentManager.java
M fragment/fragment/src/main/java/androidx/fragment/app/FragmentTransaction.java
A fragment/fragment/src/main/java/androidx/fragment/app/strictmode/FragmentReuseViolation.java
M fragment/fragment/src/main/java/androidx/fragment/app/strictmode/FragmentStrictMode.java
Description
Component used: Fragment
Allow developers to detect when they are reusing a fragment instance after it was previously removed from a FragmentManager (i.e., that
initState()
was called).Ideally, this should also change the
require***()
methods to change their error message based on whether the fragment was never added (the current error message) or if it was previously added but has since been removed (a new error message).This would probably have to hook into both the
FragmentTransaction
methods for adding a fragment (to provide better stack traces) as well as in the internaladdFragment()
to ensure that Fragments that were removed as part of an inflight transaction are properly caught.