This commit is contained in:
2025-12-07 11:36:04 +08:00
parent 786295def1
commit 9bea2b4e24
5 changed files with 83 additions and 10 deletions

View File

@@ -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)
}

View File

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