fix bugs.7
This commit is contained in:
@@ -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>) {
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user