直接说解决办法,在activity中创建adapter时fragment管理参数用supportFragmentManager,而在fragment中创建adpater时参数用childFragmentManager分开管理,就可以了。错误原因:我在fragmetn中创建adpater用了activity.supportFragmentManager,自作聪明了。
val adapter = FragmentAdapter<BaseFragment>(supportFragmentManager)
adapter.addFragment(StationPowerFragment(it), getString(R.string.station_power))
adapter.addFragment(StationElectricFragment(it.id!!), getString(R.string.station_electric))
adapter.addFragment(StationLayoutFragment(it), getString(R.string.station_layout))
adapter.addFragment(StationStatusFragment(it.id!!), getString(R.string.station_status))
adapter.addFragment(StationSwitchFragment(it.id!!), getString(R.string.station_switch))
// viewBinding.contentViewPager.offscreenPageLimit = 4 //预加载的页面数量
viewBinding.contentViewPager.adapter = adapter
val adapter: FragmentAdapter<BaseFragment> = FragmentAdapter(childFragmentManager)
adapter.addFragment(StatusBeehiveFragment(stationId), getString(R.string.beehive))
adapter.addFragment(StatusSwarmFragment(stationId), getString(R.string.swarm))
adapter.addFragment(StatusHoneybeeFragment(stationId), getString(R.string.honeybee))
viewBinding.viewPager.offscreenPageLimit = 2 //缓存页面个数
viewBinding.viewPager.adapter = adapter
在创建FragmentAdapter时,应当注意在Activity中使用supportFragmentManager,而在Fragment内部使用childFragmentManager。错误的做法是,在Fragment中误用了Activity的supportFragmentManager。修正方法是正确地切换到childFragmentManager来实例化和管理Adapter的Fragments,这可以避免混淆并确保正确的Fragment生命周期管理。
3373

被折叠的 条评论
为什么被折叠?



