From 9ac374a795c0afddda50e163769d2e2ac2df4535 Mon Sep 17 00:00:00 2001 From: bxb Date: Tue, 7 Mar 2023 20:41:26 +0800 Subject: [PATCH] =?UTF-8?q?[=E6=B8=85=E6=89=AB=E8=BD=A6]java.lang.IllegalS?= =?UTF-8?q?tateException:=20Cannot=20show=20Fragment=20attached=20to=20a?= =?UTF-8?q?=20different=20FragmentManager=20=E5=B4=A9=E6=BA=83=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/och/sweeper/SweeperProvider.java | 17 ++++++++++++----- .../och/sweeper/fragment/SweeperFragment.kt | 15 +++++++++------ 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/SweeperProvider.java b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/SweeperProvider.java index a2ffa6abe3..6d8ef217fe 100644 --- a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/SweeperProvider.java +++ b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/SweeperProvider.java @@ -5,6 +5,7 @@ import android.content.Context; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; +import androidx.fragment.app.FragmentManager; import com.alibaba.android.arouter.facade.annotation.Route; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; @@ -32,18 +33,24 @@ public class SweeperProvider implements IMogoOCH { @Override public void init(Context context) { } - private void showFragment() { + FragmentManager supportFragmentManager = activity.getSupportFragmentManager(); if (sweeperFragment == null) { CallerLogger.INSTANCE.d(TAG, "准备add fragment======"); - sweeperFragment = new SweeperFragment(); - activity.getSupportFragmentManager().beginTransaction().add(containerId, sweeperFragment).commitAllowingStateLoss(); + Fragment fragmentByTag = supportFragmentManager.findFragmentByTag(sweeperFragment.TAG); + if (fragmentByTag instanceof SweeperFragment) { + sweeperFragment = (SweeperFragment) fragmentByTag; + } else { + sweeperFragment = new SweeperFragment(); + } + if(!sweeperFragment.isAdded()) { + supportFragmentManager.beginTransaction().add(containerId, sweeperFragment, sweeperFragment.TAG).commitAllowingStateLoss(); + } return; } CallerLogger.INSTANCE.d(TAG, "准备show fragment"); - activity.getSupportFragmentManager().beginTransaction().show(sweeperFragment).commitAllowingStateLoss(); + supportFragmentManager.beginTransaction().show(sweeperFragment).commitAllowingStateLoss(); } - private void hideFragment() { if (sweeperFragment != null) { CallerLogger.INSTANCE.d(TAG, "准备hide fragment"); diff --git a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/fragment/SweeperFragment.kt b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/fragment/SweeperFragment.kt index 0377883e04..f7f3960578 100644 --- a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/fragment/SweeperFragment.kt +++ b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/fragment/SweeperFragment.kt @@ -37,7 +37,10 @@ import java.math.RoundingMode * 清扫车主界面 */ class SweeperFragment : BaseSweeperTabFragment(), MenuPopWindow.OnMenuItemOnClickListener { - private val TAG = "SweeperFragment" + + companion object{ + const val TAG = "SweeperFragment" + } private var mAdapter: TaskListAdapter? = null private var mCurrentSubPosition: Int = 0 //子任务下标 private var mSubMutableList: MutableList? = null @@ -66,7 +69,7 @@ class SweeperFragment : BaseSweeperTabFragment { //子任务跳过 @@ -290,7 +293,7 @@ class SweeperFragment : BaseSweeperTabFragment { //子任务开始 @@ -397,8 +400,8 @@ class SweeperFragment : BaseSweeperTabFragment