android kotlin 确保 viewPager2 pageItem resume 仅在屏幕上触发的当前方法是啥?
Posted
技术标签:
【中文标题】android kotlin 确保 viewPager2 pageItem resume 仅在屏幕上触发的当前方法是啥?【英文标题】:android kotlin what is the current way of make sure viewPager2 pageItem resume is fired only when onscreen?android kotlin 确保 viewPager2 pageItem resume 仅在屏幕上触发的当前方法是什么? 【发布时间】:2021-01-28 00:20:01 【问题描述】:仅当 viewPager2 页面可见时,我才需要初始化任务(启动 countDownTimer)。 并在他们离开屏幕时停止计时器。 但是,我被困在 pageItem 屏幕外时会触发 resume() 的事实。
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])
【问题讨论】:
代码似乎不完整。 【参考方案1】:ViePager2
出于性能原因在屏幕外创建和附加片段。你可以做的是实现一个ViewPager2.OnPageChangeCallback
,然后在你的片段上有一个方法告诉它是当前活动的片段。
例如
fun onPageSelected(position int)
adapter.items.forEachIndexed( index, fragment ->
fragment.setActive(position == index)
【讨论】:
onChangeCallBack 在用户从 A 滑到 B 时触发(如果成功),B 可以是 A-1 或 A+1。根据我的要求,我需要弄清楚用户是切换到 A-1 还是 A+1 甚至是 A(failure) 以在新的活动页面上重新激活我的计时器。简而言之,除非我错过了什么,否则这并没有多大帮助以上是关于android kotlin 确保 viewPager2 pageItem resume 仅在屏幕上触发的当前方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
Kotlin 实现三级菜单列表(左右滑动)+自定义ViewPager+三个ListView列表的功能
Kotlin 实现三级菜单列表(左右滑动)+自定义ViewPager+三个ListView列表的功能
BottomNavigationView+ViewPager+Fragment 底部导航按钮 kotlin版本