From e43ead1f0631cec75788d35224a58226c2e757d2 Mon Sep 17 00:00:00 2001 From: YoKey Date: Tue, 14 Aug 2018 22:55:59 +0800 Subject: [PATCH] fix #949 #942 `extraTransaction().setCustomAnimations()` exitAnimation is not working --- .../fragmentation/TransactionDelegate.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/fragmentation_core/src/main/java/me/yokeyword/fragmentation/TransactionDelegate.java b/fragmentation_core/src/main/java/me/yokeyword/fragmentation/TransactionDelegate.java index 049e81d0..fff13f33 100755 --- a/fragmentation_core/src/main/java/me/yokeyword/fragmentation/TransactionDelegate.java +++ b/fragmentation_core/src/main/java/me/yokeyword/fragmentation/TransactionDelegate.java @@ -247,19 +247,23 @@ void pop(final FragmentManager fm) { @Override public void run() { handleAfterSaveInStateTransactionException(fm, "pop()"); - removeTopFragment(fm); FragmentationMagician.popBackStackAllowingStateLoss(fm); + removeTopFragment(fm); } }); } private void removeTopFragment(FragmentManager fm) { - ISupportFragment top = SupportHelper.getBackStackTopFragment(fm); - if (top != null) { - fm.beginTransaction() - .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE) - .remove((Fragment) top) - .commitAllowingStateLoss(); + try { // Safe popBackStack() + ISupportFragment top = SupportHelper.getBackStackTopFragment(fm); + if (top != null) { + fm.beginTransaction() + .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE) + .remove((Fragment) top) + .commitAllowingStateLoss(); + } + } catch (Exception ignored) { + } }