[清扫车]java.lang.IllegalStateException: Cannot show Fragment attached to a different FragmentManager 崩溃问题修改
This commit is contained in:
@@ -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");
|
||||
|
||||
@@ -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}")
|
||||
|
||||
Reference in New Issue
Block a user