我正在ViewPager 2中工作,在我的应用程序中有Paging 3库。当我一次又一次地打开我的视图寻呼机屏幕时,即打开屏幕并关闭它,如此反复。最初几次它打开正确的页码,但有时它给我错误的页码打开时,快速打开和关闭。我问了一个类似的question,它解决了这个问题,但出现了类似的问题,100%确信这个问题与ViewPager 2有关
class activity : BaseActivity() {
private val viewModel: ViewPagerViewModel by inject()
private var adapter = createAdapter()
private lateinit var binding: ViewPagerActivityLayoutBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ViewPagerActivityLayoutBinding.inflate(layoutInflater)
setContentView(binding.root)
setUpRepoAndAdapter()
}
private fun setUpRepoAndAdapter() {
val viewRepository = ViewRepository()
lifecycleScope.launchWhenCreated {
repeatOnLifecycle(Lifecycle.State.STARTED) {
viewModel.createRepositoryData(viewRepository).collect { data ->
adapter = createAdapter()
binding.viewViewpager.adapter = adapter
adapter.submitData(data)
}
}
}
}
private fun createAdapter(): ViewPagerAdapter {
return ViewPagerAdapter(action = {
launchScreen()
})
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == DAILY_VIEW) {
data?.let { intent ->
(intent.extras?.get(BUNDLE_KEY) as? Date)?.let { clickedDate ->
viewModel.initialDate = clickedDate
setUpRepoAndAdapter()
}
}
}
}
}
我正在添加我的原始应用程序的截屏视频。我点击了**1st Dec.**Date,它有时会打开为2nd Dec.,有时会打开正确的日期。我不明白为什么会发生这种情况this。上面的堆栈溢出链接里面有我的GitHub示例项目链接。
1条答案
按热度按时间aiazj4mn1#
Android问题跟踪器中报告了一个与此问题相关的官方问题。此问题仍处于开放状态,尚未解决。不过,一些人建议了几种可能的解决方案:
1.确保适配器正确实现了getItemId()方法。
1.不要在onCreate()回调中使用setCurrentItem()。
1.请使用smoothScrollToPosition(),而不要使用setCurrentItem()。
1.尝试使用setOffscreenPageLimit()限制内存中保留的页数。
1.确保您使用的是ViewPager2库的最新版本。