我在开发app的时候,外层是个FrameLayout,用Transaction替换fragment的方式实现切换fragment
val transaction = mFragmentManager.beginTransaction()
fragment = FragmentFactory.createMainFragment(position) as BaseFragment<*>
transaction.replace(R.id.fl_content, fragment, position.toString() + "")
transaction.commitAllowingStateLoss()
然后在其中第二个fragment里面,又嵌套了一个tablayout+viewpager,然而这时候我发现,切换了外面这层fragment的时候,会导致里面的viewpager中某些页面显示出空白
tl_cabinet.setupWithViewPager(vp_cabinet,false)
for (title in titles){
tl_cabinet.addTab(tl_cabinet.newTab().setText(title))
}
var pagerAdapter = CabinetPagerAdapter(activity!!.supportFragmentManager,titles)
// pagerAdapter.notifyDataSetChanged()
vp_cabinet.adapter = pagerAdapter
上面是原方法,后面我才发现是fragmentManager的问题,传给pagerAdapter需要用childFragmentManager
var pagerAdapter = CabinetPagerAdapter(childFragmentManager,titles)
其实这个问题前面也遇到过,没有记录,搞得我都忘了,这次记录一下