我只想在viewPager2页面可见时执行初始化任务(启动countDownTimer)。当他们离开屏幕时停止计时器。然而,我坚持认为resume()是在pageItem的屏幕外触发的。
setUserVisibleHint似乎被弃用了,似乎sexMaxLifeCycle是当前的方式,但是,我不确定如何调用它,不确定是否在...onHiddenChanged()也不起作用。
class ToneFragmentStateAdapter(activity:FragmentActivity):FragmentStateAdapter(activity){
fun setItems(newItems: List<Tone4>) {
_items = newItems
notifyDataSetChanged()
}
private var _items = listOf<Tone4>()
override fun getItemCount(): Int = _items.size
override fun createFragment(position: Int): Fragment
= TonePageFragment.newInstance(position, _items[position])}
发布于 2020-10-14 00:12:43
出于性能原因,ViePager2
在屏幕外创建和附加片段。您可以做的是实现一个ViewPager2.OnPageChangeCallback
,然后在您的片段上有一个方法来告诉它是当前活动的片段。
例如
fun onPageSelected(position int) {
adapter.items.forEachIndexed( index, fragment -> {
fragment.setActive(position == index)
}
}
https://stackoverflow.com/questions/64338979
复制相似问题