68 1
This commit is contained in:
@@ -1685,8 +1685,9 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
|
||||
} else {
|
||||
clFirstCharge(false)
|
||||
}
|
||||
|
||||
EventBus.getDefault().post(mRoomInfoResp?.room_info)
|
||||
mRoomInfoResp?.room_info?.let { roomInfo ->
|
||||
EventBus.getDefault().post(roomInfo)
|
||||
}
|
||||
|
||||
EventBus.getDefault().post(roomSettingEvent)
|
||||
}
|
||||
@@ -1926,7 +1927,11 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
|
||||
roomFragment!!.upRoomInfoData(mRoomInfoResp)
|
||||
roomFragment?.handleRoomMessage(messageEvent)
|
||||
}
|
||||
|
||||
RoomType.SIGN_CONTRACT ->{
|
||||
mRoomInfoResp?.room_info?.pit_list!![pitNumber.toInt() - 1] = RoomPitBean(pitNumber)
|
||||
roomFragment!!.upRoomInfoData(mRoomInfoResp)
|
||||
roomFragment?.handleRoomMessage(messageEvent)
|
||||
}
|
||||
else -> {
|
||||
roomFragment!!.updateSeatViewExchangedWithPitArray(mRoomInfoResp)
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.xscm.modulemain.activity.room.fragment;
|
||||
|
||||
import android.Manifest;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.os.CountDownTimer;
|
||||
@@ -59,6 +60,10 @@ import java.nio.charset.StandardCharsets;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import io.reactivex.Observable;
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
|
||||
/**
|
||||
* @author qx
|
||||
@@ -110,6 +115,7 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
|
||||
|
||||
FragmentManager fragmentManager = null;
|
||||
FragmentTransaction fragmentTransaction = null;
|
||||
|
||||
private void setRoomSeatViewType() {
|
||||
if (mRoomInfoResp == null || mRoomInfoResp.getRoom_info() == null) {
|
||||
return;
|
||||
@@ -402,7 +408,8 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
|
||||
} else if (roomType == RoomType.DATING) {
|
||||
newFragment = switch (labelId) {
|
||||
case "2" -> {
|
||||
if (ktvFragment == null) ktvFragment = RoomKtvFragment.newInstance(mRoomInfoResp);
|
||||
if (ktvFragment == null)
|
||||
ktvFragment = RoomKtvFragment.newInstance(mRoomInfoResp);
|
||||
else ktvFragment.roomInfoUpdate(mRoomInfoResp);
|
||||
yield ktvFragment;
|
||||
}
|
||||
@@ -436,7 +443,7 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
|
||||
}
|
||||
|
||||
if (newFragment != null) {
|
||||
switchFragment(newFragment, mBinding.roomItem.getId());
|
||||
switchFragment(newFragment, mBinding.roomItem.getId(), false);
|
||||
} else {
|
||||
LogUtils.e("newFragment==null");
|
||||
}
|
||||
@@ -464,7 +471,11 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
|
||||
private Fragment currentFragment = null;
|
||||
private boolean isReplacing = false;
|
||||
|
||||
private void switchFragment(Fragment newFragment, int containerId) {
|
||||
private int MAX_COUNT = 3;
|
||||
private int retryCount = 0;
|
||||
|
||||
@SuppressLint("CheckResult")
|
||||
private void switchFragment(Fragment newFragment, int containerId, boolean isAddFail) {
|
||||
if (!isAdded() || newFragment == null) return;
|
||||
LogUtils.e("switchFragment attachA");
|
||||
FragmentTransaction ft = getChildFragmentManager().beginTransaction();
|
||||
@@ -489,6 +500,43 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
|
||||
|
||||
currentFragment = newFragment;
|
||||
|
||||
// 校验2:事务执行后,验证Fragment的核心状态
|
||||
// ① 是否真的附加到FragmentManager
|
||||
boolean isLoadSuccess = true;
|
||||
String errorMsg = null;
|
||||
// 更全面的检查
|
||||
if (!newFragment.isAdded()) {
|
||||
isLoadSuccess = false;
|
||||
errorMsg = "Fragment未附加到FragmentManager";
|
||||
} else if (newFragment.getView() == null) {
|
||||
isLoadSuccess = false;
|
||||
errorMsg = "Fragment View创建失败";
|
||||
} else if (!newFragment.isResumed()) {
|
||||
// 可选:检查是否至少执行到onResume
|
||||
// 注意:某些场景可能不需要这么严格的检查
|
||||
isLoadSuccess = false;
|
||||
errorMsg = "Fragment未进入Resumed状态";
|
||||
}
|
||||
LogUtils.e("switchFragment :"+errorMsg +",isLoadSuccess:"+isLoadSuccess);
|
||||
// 处理失败情况
|
||||
if (!isLoadSuccess) {
|
||||
Log.e("FragmentCheck", errorMsg);
|
||||
|
||||
if (retryCount == MAX_COUNT){
|
||||
LogUtils.e("switchFragment retryCount == MAX_COUNT");
|
||||
return;
|
||||
}
|
||||
// 可以考虑自动恢复或通知用户
|
||||
Observable.timer(1000, TimeUnit.MILLISECONDS).observeOn(AndroidSchedulers.mainThread()).subscribe(
|
||||
aLong ->{
|
||||
retryCount++;
|
||||
LogUtils.e("switchFragment retry");
|
||||
switchFragment(newFragment, containerId, true);
|
||||
}
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
startActivity(new Intent(ActivityUtils.getTopActivity(), TransparentActivity.class));
|
||||
}
|
||||
|
||||
@@ -779,7 +827,7 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
|
||||
|
||||
switch (qxRoomSeatViewType) {
|
||||
case KTV:
|
||||
if (ktvFragment == currentFragment) {
|
||||
if (ktvFragment == currentFragment) {
|
||||
handleKtvEvent(messageEvent);
|
||||
}
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user