I am working in ViewPager 2 with Paging 3 library in my application. When I am opening my view pager screen again and again i.e. Open the screen and close it and again so on and so. The first few times it opens the correct page number but sometimes it gives me the wrong page number to open when doing fast open and close. I asked a similar question and it solve the issue, but something is similar issue came and 100% confident this issue is related to 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()
}
}
}
}
}
I am adding a screencast of my original application. I am clicking on 1st Dec. Date and it's opening as 2nd Dec sometime and sometimes opening correct date. I am not understanding why this is happening this. The above stack overflow link inside has my GitHub sample project link.