fix bugs.7

This commit is contained in:
2025-12-06 09:30:18 +08:00
parent 5ee3c19afb
commit ad29cce6a5
2 changed files with 34 additions and 28 deletions

View File

@@ -4052,19 +4052,15 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
}
}
if (roomFragment != null) {
supportFragmentManager.beginTransaction().remove(roomFragment!!).commitAllowingStateLoss()
roomFragment = null
}
/*else {
if (roomFragment == null) {
roomFragment = RoomFragment.newInstance(this, mRoomInfoResp)
supportFragmentManager
.beginTransaction()
.replace(R.id.vp_room_pager, roomFragment!!)
.commitAllowingStateLoss()
} else {
roomFragment!!.refreshData(mRoomInfoResp, qxType)
}*/
roomFragment = RoomFragment.newInstance(this, mRoomInfoResp)
supportFragmentManager
.beginTransaction()
.replace(R.id.vp_room_pager, roomFragment!!)
.commitAllowingStateLoss()
}
}
override fun getCharmRank(list: List<RoomCharmRankBean>) {

View File

@@ -102,6 +102,9 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
private RoomMentorShipFragment mentorShipFragment;//签约
public QXRoomSeatViewType qxRoomSeatViewType;
FragmentManager fragmentManager = null;
FragmentTransaction fragmentTransaction = null;
private void setRoomSeatViewType() {
if (mRoomInfoResp == null || mRoomInfoResp.getRoom_info() == null) {
return;
@@ -134,6 +137,11 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
fragmentManager = getChildFragmentManager();
fragmentTransaction = fragmentManager.beginTransaction();
setRoomSeatViewType();
upRoomInfo(mRoomInfoResp);
}
@@ -180,9 +188,8 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
*/
private void releaseChildFragments() {
try {
FragmentManager fragmentManager = getChildFragmentManager();
// 获取所有子Fragment
List<Fragment> fragments = getChildFragmentManager().getFragments();
List<Fragment> fragments = fragmentManager.getFragments();
if (!fragments.isEmpty()) {
for (Fragment fragment : fragments) {
if (fragment != null) {
@@ -207,7 +214,6 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
}else if (fragment instanceof RoomMentorShipFragment){
mentorShipFragment = null;
}
fragmentManager.beginTransaction().remove(fragment).commitNowAllowingStateLoss();
}
}
}
@@ -251,10 +257,6 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
loadSubFragment(qxRoomSeatViewType);
}
private <T extends Fragment> T findFragmentByTag(Class<T> fragmentClass) {
return (T) getChildFragmentManager().findFragmentByTag(fragmentClass.getSimpleName());
}
public void updateChildFragmentViews() {
// 使用弱引用避免内存泄漏
@@ -442,10 +444,10 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
}
private void performFragmentReplacement(@NonNull Fragment newFragment, int containerId) {
FragmentManager fragmentManager = getChildFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.replace(containerId, newFragment, "TAG_" + containerId); // 加TAG便于查找
transaction.commitAllowingStateLoss();
ensureFragmentView(newFragment);
fragmentTransaction.replace(containerId, newFragment); // 加TAG便于查找
fragmentTransaction.commitAllowingStateLoss();
fragmentManager.executePendingTransactions(); // 关键
}
@@ -517,7 +519,7 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
args.putString("roomId", roomId);
args.putInt("displayMode", displayMode);
wheatFeedingDialogFragment.setArguments(args);
wheatFeedingDialogFragment.show(getChildFragmentManager(), "WheatFeedingDialogFragment");
wheatFeedingDialogFragment.show(fragmentManager, "WheatFeedingDialogFragment");
}
@@ -680,10 +682,8 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
// TODO: 2025/9/3 小黑屋火热值更新
public void handleMsgType1028(RoomMessageEvent messageEvent) {
RoomCabinFragment cabinFragment = (RoomCabinFragment) getChildFragmentManager()
.findFragmentByTag(RoomCabinFragment.class.getSimpleName());
if (cabinFragment != null) {
cabinFragment.handleMsgType1028(messageEvent);
if (roomCabinFragment != null) {
roomCabinFragment.handleMsgType1028(messageEvent);
}
}
@@ -986,5 +986,15 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
}
}
private void ensureFragmentView(Fragment f) {
if (f.getView() == null) {
LogUtils.e("Fragment view is null, try to force attach: " + f.getClass().getSimpleName());
// 强制触发一次 view 的创建
// getChildFragmentManager()
// .beginTransaction()
// .attach(f)
// .commitNowAllowingStateLoss();
}
}
}