From bb2ee2aa82097acc8810f83e695d3ed3178ca352 Mon Sep 17 00:00:00 2001 From: cgspine Date: Thu, 22 Oct 2020 00:23:21 +0800 Subject: [PATCH] bugfix: npe --- .../qmuiteam/qmui/arch/QMUIFragmentPagerAdapter.java | 12 +++++++++++- .../com/qmuiteam/qmui/widget/QMUIPagerAdapter.java | 1 - 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/arch/src/main/java/com/qmuiteam/qmui/arch/QMUIFragmentPagerAdapter.java b/arch/src/main/java/com/qmuiteam/qmui/arch/QMUIFragmentPagerAdapter.java index 795c50f7..d4eea7a2 100644 --- a/arch/src/main/java/com/qmuiteam/qmui/arch/QMUIFragmentPagerAdapter.java +++ b/arch/src/main/java/com/qmuiteam/qmui/arch/QMUIFragmentPagerAdapter.java @@ -86,10 +86,14 @@ public abstract class QMUIFragmentPagerAdapter extends QMUIPagerAdapter { @SuppressLint("CommitTransaction") @Override protected void destroy(@NonNull ViewGroup container, int position, @NonNull Object object) { + Fragment fragment = (Fragment) object; if (mCurrentTransaction == null) { mCurrentTransaction = mFragmentManager.beginTransaction(); } - mCurrentTransaction.detach((Fragment) object); + mCurrentTransaction.detach(fragment); + if (fragment == mCurrentPrimaryItem) { + mCurrentPrimaryItem = null; + } } @Override @@ -114,9 +118,15 @@ public abstract class QMUIFragmentPagerAdapter extends QMUIPagerAdapter { if (fragment != mCurrentPrimaryItem) { if (mCurrentPrimaryItem != null) { mCurrentPrimaryItem.setMenuVisibility(false); + if (mCurrentTransaction == null) { + mCurrentTransaction = mFragmentManager.beginTransaction(); + } mCurrentTransaction.setMaxLifecycle(mCurrentPrimaryItem, Lifecycle.State.STARTED); } fragment.setMenuVisibility(true); + if (mCurrentTransaction == null) { + mCurrentTransaction = mFragmentManager.beginTransaction(); + } mCurrentTransaction.setMaxLifecycle(fragment, Lifecycle.State.RESUMED); mCurrentPrimaryItem = fragment; } diff --git a/qmui/src/main/java/com/qmuiteam/qmui/widget/QMUIPagerAdapter.java b/qmui/src/main/java/com/qmuiteam/qmui/widget/QMUIPagerAdapter.java index 4418e3ff..85b8d355 100644 --- a/qmui/src/main/java/com/qmuiteam/qmui/widget/QMUIPagerAdapter.java +++ b/qmui/src/main/java/com/qmuiteam/qmui/widget/QMUIPagerAdapter.java @@ -61,7 +61,6 @@ public abstract class QMUIPagerAdapter extends PagerAdapter { @Override public final void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) { destroy(container, position, object); - } /**