Skip to content

Commit d0bf2d6

Browse files
committed
Fix #653, for compatibility with v4-27.0.0
1 parent 94e95a8 commit d0bf2d6

File tree

1 file changed

+30
-9
lines changed

1 file changed

+30
-9
lines changed

fragmentation_core/src/main/java/me/yokeyword/fragmentation/TransactionDelegate.java

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -256,15 +256,26 @@ private void executeStartWithPop(final FragmentManager fragmentManager, final IS
256256

257257
mockStartWithPopAnim(from, to, from.getSupportDelegate().mAnimHelper.popExitAnim);
258258
fragmentManager.popBackStackImmediate();
259+
259260
mHandler.post(new Runnable() {
260261
@Override
261262
public void run() {
262-
FragmentationHack.reorderIndices(fragmentManager);
263-
if (preFragment != null && preFragment.getSupportDelegate().mContainerId == fromContainerId) {
264-
preFragment.getSupportDelegate().start(to);
265-
} else {
266-
dispatchStartTransaction(fragmentManager, from, to, 0, ISupportFragment.STANDARD, TYPE_ADD);
267-
}
263+
/**
264+
* This `post` is for compatibility with v4-27.0.0
265+
* @see android.support.v4.app.FragmentManagerImpl#animateRemoveFragment
266+
*/
267+
mHandler.post(new Runnable() {
268+
@Override
269+
public void run() {
270+
fragmentManager.executePendingTransactions();
271+
FragmentationHack.reorderIndices(fragmentManager);
272+
if (preFragment != null && preFragment.getSupportDelegate().mContainerId == fromContainerId) {
273+
preFragment.getSupportDelegate().start(to);
274+
} else {
275+
dispatchStartTransaction(fragmentManager, from, to, 0, ISupportFragment.STANDARD, TYPE_ADD);
276+
}
277+
}
278+
});
268279
}
269280
});
270281
}
@@ -491,9 +502,18 @@ public void call() {
491502
mHandler.post(new Runnable() {
492503
@Override
493504
public void run() {
494-
mPopToTempFragmentManager = finalFragmentManager;
495-
afterPopTransactionRunnable.run();
496-
mPopToTempFragmentManager = null;
505+
/**
506+
* This `post` is for compatibility with v4-27.0.0
507+
* @see android.support.v4.app.FragmentManagerImpl#animateRemoveFragment
508+
*/
509+
mHandler.post(new Runnable() {
510+
@Override
511+
public void run() {
512+
mPopToTempFragmentManager = finalFragmentManager;
513+
afterPopTransactionRunnable.run();
514+
mPopToTempFragmentManager = null;
515+
}
516+
});
497517
}
498518
});
499519
}
@@ -606,6 +626,7 @@ private void handleMock(Animation exitAnim, boolean afterRunnable, Callback cb,
606626
delay = duration + BUFFER_TIME;
607627
} else {
608628
duration = duration + BUFFER_TIME;
629+
delay = duration;
609630
}
610631
exitAnim.setDuration(duration);
611632
}

0 commit comments

Comments
 (0)