直接说解决办法,在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

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐