Status Update
Comments
il...@google.com <il...@google.com> #2
Jeremy, is this still an issue? I think the problem was that you had two transitions targeting the same View for the same action (e.g. two Slide() transitions).
co...@google.com <co...@google.com> #3
I have a similar issue with plain AnimatorSet:
set.start()
set.pause()
set.setCurrentPlayTime(100)
set.setCurrentPlayTime(0)
set.setCurrentPlayTime(100)
set.resume()
doesn't play animation in resume().
il...@google.com <il...@google.com> #4
Should clarify that if I filter out setCurrentPlayTime(0)
(or replace it with setCurrentPlayTime(1)
) it works well.
Also even with setCurrentPlayTime(0)
, onAnimationEnd
is notified with correct delay (as if the animation has played).
ke...@gmail.com <ke...@gmail.com> #5
@
I think that is intended for Animator. If you set the currentPlayTime
to 0 or the total duration the animator completes. We do some
il...@google.com <il...@google.com>
il...@google.com <il...@google.com> #6
Did some investigation on the Fragment side and it seems like the merged transition is targeting correctly.
Exiting Transition: Slide@aa9288e: tgts(android.widget.LinearLayout{f9add3d})
>>>>> ExitingViews <<<<<
View: android.widget.LinearLayout{f9add3d}
Entering Transition: Slide@35b8af: tgts(android.widget.LinearLayout{b7f24bc})
>>>>> EnteringViews <<<<<
View: android.widget.LinearLayout{b7f24bc}
Final merged transition: TransitionSet@7bc1c45:
TransitionSet@e133f9a:
Slide@aa9288e: tgts(android.widget.LinearLayout{f9add3d})
Slide@35b8af: tgts(android.widget.LinearLayout{b7f24bc})
merged transition passed to controlDelayedTransition: TransitionSet@7bc1c45:
TransitionSet@e133f9a:
Slide@aa9288e: tgts(android.widget.LinearLayout{f9add3d})
Slide@35b8af: tgts(android.widget.LinearLayout{b7f24bc})
Still digging.
Description
Version used: 1.1.0-alplha01
Devices/Android versions reproduced on: Essential PH-1, Android 9.0 (PPR1.181005.034)
Attached a sample project to reproduce the issue. Essentially, given the component structure:
Activity:
supportFragmentManager -> HeadlessFragment
HeadlessFragment:
childFragmentManager -> HeadlessChildFragment
When the Activity is recreated, the state provided to the HeadlessChildFragment when recreating is null. However, logging the calls to onSaveInstanceState() it's clear that the Fragment's state is being saved, it's just failing to be restored. Running with FragmentManager.enableDebugLogging(true) gives the following output:
2018-11-20 12:59:46.293 17352-17352/ D/MainActivity: 218206560: onCreate(): savedInstanceState == null
2018-11-20 12:59:46.315 17352-17352/ V/FragmentManager: Commit: BackStackEntry{bc270bf}
2018-11-20 12:59:46.316 17352-17352/ D/FragmentManager: mName=null mIndex=-1 mCommitted=false
2018-11-20 12:59:46.316 17352-17352/ D/FragmentManager: Operations:
2018-11-20 12:59:46.316 17352-17352/ D/FragmentManager: Op #0: ADD ParentHeadlessFragment{2de638c (c94b7470-c453-471f-9231-254d296d2ab1) parent}
2018-11-20 12:59:46.340 17352-17352/ V/FragmentManager: Run: BackStackEntry{bc270bf}
2018-11-20 12:59:46.343 17352-17352/ V/FragmentManager: add: ParentHeadlessFragment{2de638c (c94b7470-c453-471f-9231-254d296d2ab1) parent}
2018-11-20 12:59:46.343 17352-17352/ V/FragmentManager: Added fragment to active set ParentHeadlessFragment{2de638c (c94b7470-c453-471f-9231-254d296d2ab1) parent}
2018-11-20 12:59:46.343 17352-17352/ V/FragmentManager: moveto CREATED: ParentHeadlessFragment{2de638c (c94b7470-c453-471f-9231-254d296d2ab1) parent}
2018-11-20 12:59:46.343 17352-17352/ D/ParentHeadlessFragment: 48128908: onCreate() with savedInstanceState = null
2018-11-20 12:59:46.345 17352-17352/ V/FragmentManager: Commit: BackStackEntry{85b9824}
2018-11-20 12:59:46.345 17352-17352/ D/FragmentManager: mName=null mIndex=-1 mCommitted=false
2018-11-20 12:59:46.345 17352-17352/ D/FragmentManager: Operations:
2018-11-20 12:59:46.345 17352-17352/ D/FragmentManager: Op #0: ADD ChildHeadlessFragment{732ef8d (e67b23a6-fe18-484d-b8d0-db2da9ee2a7e) child}
2018-11-20 12:59:46.345 17352-17352/ V/FragmentManager: moveto ACTIVITY_CREATED: ParentHeadlessFragment{2de638c (c94b7470-c453-471f-9231-254d296d2ab1) parent}
2018-11-20 12:59:46.345 17352-17352/ V/FragmentManager: Run: BackStackEntry{85b9824}
2018-11-20 12:59:46.346 17352-17352/ V/FragmentManager: add: ChildHeadlessFragment{732ef8d (e67b23a6-fe18-484d-b8d0-db2da9ee2a7e) child}
2018-11-20 12:59:46.346 17352-17352/ V/FragmentManager: Added fragment to active set ChildHeadlessFragment{732ef8d (e67b23a6-fe18-484d-b8d0-db2da9ee2a7e) child}
2018-11-20 12:59:46.346 17352-17352/ V/FragmentManager: moveto CREATED: ChildHeadlessFragment{732ef8d (e67b23a6-fe18-484d-b8d0-db2da9ee2a7e) child}
2018-11-20 12:59:46.346 17352-17352/ D/ChildHeadlessFragment: 120778637: onCreate() with savedInstanceState = null
2018-11-20 12:59:46.346 17352-17352/ V/FragmentManager: moveto ACTIVITY_CREATED: ChildHeadlessFragment{732ef8d (e67b23a6-fe18-484d-b8d0-db2da9ee2a7e) child}
2018-11-20 12:59:46.347 17352-17352/ V/FragmentManager: moveto STARTED: ParentHeadlessFragment{2de638c (c94b7470-c453-471f-9231-254d296d2ab1) parent}
2018-11-20 12:59:46.347 17352-17352/ V/FragmentManager: moveto STARTED: ChildHeadlessFragment{732ef8d (e67b23a6-fe18-484d-b8d0-db2da9ee2a7e) child}
2018-11-20 12:59:46.383 17352-17352/ W/ildfragmenttes: Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (light greylist, reflection)
2018-11-20 12:59:46.384 17352-17352/ W/ildfragmenttes: Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (light greylist, reflection)
2018-11-20 12:59:46.394 17352-17352/ V/FragmentManager: moveto RESUMED: ParentHeadlessFragment{2de638c (c94b7470-c453-471f-9231-254d296d2ab1) parent}
2018-11-20 12:59:46.394 17352-17352/ V/FragmentManager: moveto RESUMED: ChildHeadlessFragment{732ef8d (e67b23a6-fe18-484d-b8d0-db2da9ee2a7e) child}
// Configuration changed:
2018-11-20 12:59:58.045 17352-17352/ V/FragmentManager: movefrom RESUMED: ParentHeadlessFragment{2de638c (c94b7470-c453-471f-9231-254d296d2ab1) parent}
2018-11-20 12:59:58.045 17352-17352/ V/FragmentManager: movefrom RESUMED: ChildHeadlessFragment{732ef8d (e67b23a6-fe18-484d-b8d0-db2da9ee2a7e) child}
2018-11-20 12:59:58.048 17352-17352/ V/FragmentManager: movefrom STARTED: ParentHeadlessFragment{2de638c (c94b7470-c453-471f-9231-254d296d2ab1) parent}
2018-11-20 12:59:58.048 17352-17352/ V/FragmentManager: movefrom STARTED: ChildHeadlessFragment{732ef8d (e67b23a6-fe18-484d-b8d0-db2da9ee2a7e) child}
2018-11-20 12:59:58.048 17352-17352/ D/MainActivity: 218206560: onSaveInstanceState()
2018-11-20 12:59:58.050 17352-17352/ D/ParentHeadlessFragment: 48128908: onSaveInstanceState()
2018-11-20 12:59:58.050 17352-17352/ D/ChildHeadlessFragment: 120778637: onSaveInstanceState()
// I suspect the issue is here, where the Bundle listed in the log is null:
2018-11-20 12:59:58.051 17352-17352/ V/FragmentManager: Saved state of ChildHeadlessFragment{732ef8d (e67b23a6-fe18-484d-b8d0-db2da9ee2a7e) child}: null
2018-11-20 12:59:58.051 17352-17352/ V/FragmentManager: saveAllState: adding fragment (e67b23a6-fe18-484d-b8d0-db2da9ee2a7e): ChildHeadlessFragment{732ef8d (e67b23a6-fe18-484d-b8d0-db2da9ee2a7e) child}
2018-11-20 12:59:58.051 17352-17352/ V/FragmentManager: Saved state of ParentHeadlessFragment{2de638c (c94b7470-c453-471f-9231-254d296d2ab1) parent}: Bundle[{android:support:fragments=androidx.fragment.app.FragmentManagerState@beee1bb}]
2018-11-20 12:59:58.051 17352-17352/ V/FragmentManager: saveAllState: adding fragment (c94b7470-c453-471f-9231-254d296d2ab1): ParentHeadlessFragment{2de638c (c94b7470-c453-471f-9231-254d296d2ab1) parent}
2018-11-20 12:59:58.052 17352-17352/ V/FragmentManager: movefrom ACTIVITY_CREATED: ParentHeadlessFragment{2de638c (c94b7470-c453-471f-9231-254d296d2ab1) parent}
2018-11-20 12:59:58.052 17352-17352/ V/FragmentManager: movefrom ACTIVITY_CREATED: ChildHeadlessFragment{732ef8d (e67b23a6-fe18-484d-b8d0-db2da9ee2a7e) child}
2018-11-20 12:59:58.054 17352-17352/ V/FragmentManager: movefrom CREATED: ParentHeadlessFragment{2de638c (c94b7470-c453-471f-9231-254d296d2ab1) parent}
2018-11-20 12:59:58.054 17352-17352/ V/FragmentManager: movefrom CREATED: ChildHeadlessFragment{732ef8d (e67b23a6-fe18-484d-b8d0-db2da9ee2a7e) child}
2018-11-20 12:59:58.054 17352-17352/ V/FragmentManager: Removed fragment from active set ChildHeadlessFragment{732ef8d (e67b23a6-fe18-484d-b8d0-db2da9ee2a7e) child}
2018-11-20 12:59:58.055 17352-17352/ V/FragmentManager: Removed fragment from active set ParentHeadlessFragment{2de638c (c94b7470-c453-471f-9231-254d296d2ab1) parent}
2018-11-20 12:59:58.088 17352-17352/ D/MainActivity: 178784293: onCreate(): savedInstanceState == Bundle[{android:viewHierarchyState=Bundle[{android:views={16908290=android.view.AbsSavedState$1@7ee69, 2131165191=androidx.appcompat.widget.Toolbar$SavedState@c3ab0ee, 2131165193=android.view.AbsSavedState$1@7ee69, 2131165199=android.view.AbsSavedState$1@7ee69, 2131165231=android.view.AbsSavedState$1@7ee69}}], android:support:fragments=androidx.fragment.app.FragmentManagerState@cfa098f, android:lastAutofillId=1073741823, android:fragments=android.app.FragmentManagerState@8f9d41c}]
2018-11-20 12:59:58.091 17352-17352/ V/FragmentManager: Instantiated fragment ParentHeadlessFragment{917afab (c94b7470-c453-471f-9231-254d296d2ab1) parent}
2018-11-20 12:59:58.092 17352-17352/ V/FragmentManager: restoreAllState: active (c94b7470-c453-471f-9231-254d296d2ab1): ParentHeadlessFragment{917afab (c94b7470-c453-471f-9231-254d296d2ab1) parent}
2018-11-20 12:59:58.092 17352-17352/ V/FragmentManager: restoreAllState: added (c94b7470-c453-471f-9231-254d296d2ab1): ParentHeadlessFragment{917afab (c94b7470-c453-471f-9231-254d296d2ab1) parent}
2018-11-20 12:59:58.092 17352-17352/ V/FragmentManager: moveto CREATED: ParentHeadlessFragment{917afab (c94b7470-c453-471f-9231-254d296d2ab1) parent}
2018-11-20 12:59:58.092 17352-17352/ D/ParentHeadlessFragment: 152547243: onCreate() with savedInstanceState = Bundle[{android:support:fragments=androidx.fragment.app.FragmentManagerState@beee1bb}]
2018-11-20 12:59:58.093 17352-17352/ V/FragmentManager: Instantiated fragment ChildHeadlessFragment{e7601a1 (e67b23a6-fe18-484d-b8d0-db2da9ee2a7e) child}
2018-11-20 12:59:58.093 17352-17352/ V/FragmentManager: restoreAllState: active (e67b23a6-fe18-484d-b8d0-db2da9ee2a7e): ChildHeadlessFragment{e7601a1 (e67b23a6-fe18-484d-b8d0-db2da9ee2a7e) child}
2018-11-20 12:59:58.093 17352-17352/ V/FragmentManager: restoreAllState: added (e67b23a6-fe18-484d-b8d0-db2da9ee2a7e): ChildHeadlessFragment{e7601a1 (e67b23a6-fe18-484d-b8d0-db2da9ee2a7e) child}
2018-11-20 12:59:58.093 17352-17352/ V/FragmentManager: moveto CREATED: ChildHeadlessFragment{e7601a1 (e67b23a6-fe18-484d-b8d0-db2da9ee2a7e) child}
2018-11-20 12:59:58.093 17352-17352/ D/ChildHeadlessFragment: 242614689: onCreate() with savedInstanceState = null
2018-11-20 12:59:58.107 17352-17352/ V/FragmentManager: moveto ACTIVITY_CREATED: ParentHeadlessFragment{917afab (c94b7470-c453-471f-9231-254d296d2ab1) parent}
2018-11-20 12:59:58.107 17352-17352/ V/FragmentManager: moveto ACTIVITY_CREATED: ChildHeadlessFragment{e7601a1 (e67b23a6-fe18-484d-b8d0-db2da9ee2a7e) child}
2018-11-20 12:59:58.108 17352-17352/ V/FragmentManager: moveto STARTED: ParentHeadlessFragment{917afab (c94b7470-c453-471f-9231-254d296d2ab1) parent}
2018-11-20 12:59:58.108 17352-17352/ V/FragmentManager: moveto STARTED: ChildHeadlessFragment{e7601a1 (e67b23a6-fe18-484d-b8d0-db2da9ee2a7e) child}
2018-11-20 12:59:58.127 17352-17352/ V/FragmentManager: moveto RESUMED: ParentHeadlessFragment{917afab (c94b7470-c453-471f-9231-254d296d2ab1) parent}
2018-11-20 12:59:58.127 17352-17352/ V/FragmentManager: moveto RESUMED: ChildHeadlessFragment{e7601a1 (e67b23a6-fe18-484d-b8d0-db2da9ee2a7e) child}