我在開發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)
其實這個問題前面也遇到過,沒有記錄,搞得我都忘了,這次記錄一下