adapter的源码如下,destroyItem回调经过处理,滑动的时候不销毁 ,viewpager所在界面销毁的时候才让super执行:
class FigViewPagerAdapter(
fm: FragmentManager?,
fragments: List<Fragment>,
mtitles: Array<String?>? = null
) : FragmentStatePagerAdapter(fm!!) {
var mFragments: List<Fragment> =
ArrayList()
var isCanRemove = false
override fun getItem(position: Int): Fragment {
return mFragments[position]
}
override fun getCount(): Int {
return mFragments.size
}
override fun getPageTitle(position: Int): CharSequence? {
return ""
}
override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
//ページは破棄されません
if (isCanRemove) {
super.destroyItem(container, position, `object`)
}
}
init {
mFragments = fragments
}
}
通过反射的方法,在内存中找到adapter中所有mFragments变量的具