OSDN Git Service

Fix bug #12993929 Screen orientation change replaces wifi password dialog with Add...
authorFabrice Di Meglio <fdimeglio@google.com>
Fri, 14 Feb 2014 01:02:11 +0000 (17:02 -0800)
committerFabrice Di Meglio <fdimeglio@google.com>
Fri, 14 Feb 2014 01:02:11 +0000 (17:02 -0800)
- do not make inactive the fragment when its transition animation is ending.

Long explanation:

Context: you need to have a first fragment pushed and then a second one replacing
the first one, and then create a DialogFragment on top of it. The FragmentManager
has then three "active" Fragments.

The mActive ArrayList of the FragmentManager is then containing:

mActive[0] = first fragment
mActive[1] = second fragment (parent of the dialog fragment)
mActive[2[ = dialog fragment

Then suppose you are changing the orientation.

During the restoration of the FragmentManager states, you will see that the
first Fragment is marked "inactive" and the mActive ArrayList is looking like:

mActive[0] = dialog fragment
mActive[1] = second fragment

which leads first to have a call to onCreateDialog() for the DialogFragment and
before it can be able to restore its state thru the calls to onCreate() and
onCreateView() for the parent (the second fragment).

Change-Id: I0268bdf13e4bdd07a783c2c82a13b431d0c5c8e4

core/java/android/app/FragmentManager.java

index bf2a629..ee8d457 100644 (file)
@@ -972,7 +972,7 @@ final class FragmentManagerImpl extends FragmentManager {
                                         if (fragment.mAnimatingAway != null) {
                                             fragment.mAnimatingAway = null;
                                             moveToState(fragment, fragment.mStateAfterAnimating,
-                                                    0, 0, false);
+                                                    0, 0, true);
                                         }
                                     }
                                 });