[清扫车]java.lang.IllegalStateException: Cannot show Fragment attached to a different FragmentManager 崩溃问题修改

This commit is contained in:
bxb
2023-03-07 20:41:26 +08:00
parent e8fb3aca30
commit 9ac374a795
2 changed files with 21 additions and 11 deletions

View File

@@ -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");

View File

@@ -37,7 +37,10 @@ import java.math.RoundingMode
* 清扫车主界面
*/
class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresenter?>(), 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<SubInfo>? = null
@@ -66,7 +69,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
sweeper_current_task_view.readyTaskBtn.setOnClickListener{
if (ClickUtils.isFastClick()){//防止重复点击
if(mSubTaskType.code==SubTaskTypeEnum.MANUAL_DRIVING_SUBTYPE.code){
manualDriving(mSubInfo)
manualDriving()
}else{
//开始执行任务
mSubInfo?.apply {
@@ -273,7 +276,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
}
sweeper_current_task_view.setCurrentData(mCurrentSubPosition)
} else {
manualDriving(mSubInfo)
manualDriving()
}
}
TaskStatusEnum.JUMP_OVER_SUBTASK.code -> { //子任务跳过
@@ -290,7 +293,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
}
sweeper_current_task_view.setCurrentData(mCurrentSubPosition)
} else {
manualDriving(mSubInfo)
manualDriving()
}
}
TaskStatusEnum.START_SUBTASK.code -> { //子任务开始
@@ -397,8 +400,8 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
/**
* 人工驾驶子任务
*/
private fun manualDriving(subInfo: SubInfo?) {
subInfo?.apply {
private fun manualDriving() {
mSubInfo?.apply {
val builder = SweeperManualDrivingDialog.Builder()
val endConfirmDialog = builder
.tips("前方子任务${taskName}手动驾驶至${endSiteName}")