Reputation: 162
**if paused end fragment and then onResumed then automatically change initial position and open first fragment. ** *there are five page; one container to show all fragment list and button click next and back in activity. My case problem occurred, open fragment and click next up to last position. work is perfect but click android background button then paused last fragment and again resumed then automatically changed initial first fragment position *
private fun setUpViewPager(){
val fragmentList : MutableList< Fragment> = mutableListOf()
fragmentList.add(SurveyPageOneFragment.newInstance(false))
fragmentList.add(SurveyPageTwoFragment.newInstance(false))
fragmentList.add(SurveyPageThreeFragment.newInstance(false))
fragmentList.add(SurveyPageFourFragment.newInstance(false))
fragmentList.add(SurveyPageFiveFragment.newInstance(false))
surveyPagerAdapter = SurveyPagerAdapter(fragmentList,supportFragmentManager,lifecycle)
binding.viewPager.adapter = surveyPagerAdapter
binding.dotsIndicator.attachTo(binding.viewPager)
}
private fun setOnClick(){
binding.btnNext.setOnClickListener {
if (binding.viewPager.currentItem < binding.viewPager.adapter?.itemCount!!){
when (fragPosition) {
0 -> {
Log.i("TAG", "Page 1: Position $fragPosition")
binding.viewPager.currentItem = binding.viewPager.currentItem +1
}
1 -> {
Log.i("TAG", "Page 2: Position $fragPosition")
binding.viewPager.currentItem = binding.viewPager.currentItem +1
}
2 -> {
Log.i("TAG", "Page 3: Position $fragPosition")
binding.viewPager.currentItem = binding.viewPager.currentItem +1
}
3 -> {
Log.i("TAG", "Page 4: Position $fragPosition")
binding.viewPager.currentItem = binding.viewPager.currentItem +1
}
4 -> {
Log.i("TAG", "Page 5: Position $fragPosition")
binding.viewPager.isUserInputEnabled = true
binding.viewPager.currentItem = binding.viewPager.currentItem +1
}
}
}
}
binding.btnBack.setOnClickListener {
if (binding.viewPager.currentItem != 0){
binding.viewPager.currentItem = binding.viewPager.currentItem -1
}
}
binding.btnDone.setOnClickListener {
startActivity(Intent(context,SurveyCompleteActivity::class.java))
}
val onPageChangeCallback = object : OnPageChangeCallback(){
override fun onPageSelected(position: Int) {
Log.i("TAG", "PageChange: $position")
fragPosition = position
if (position == 0){
binding.btnBack.visibility = View.GONE
}else{
binding.btnBack.visibility = View.VISIBLE
}
if (position < binding.viewPager.adapter?.itemCount!! -1){
binding.btnNext.visibility = View.VISIBLE
binding.btnDone.visibility = View.GONE
}else{
binding.btnNext.visibility = View.GONE
binding.btnDone.visibility = View.VISIBLE
binding.viewPager.isUserInputEnabled = false
}
}
}
binding.viewPager.registerOnPageChangeCallback(onPageChangeCallback)
}
fragment one
override fun onResume() {
Log.i("TAG", "onResume: survey page one")
super.onResume()
viewLifecycleOwner.lifecycle.currentState === Lifecycle.State.RESUMED
}
override fun onPause() {
Log.i("TAG", "onPause: survey page one")
super.onPause()
}
override fun onDestroy() {
super.onDestroy()
_binding = null
}
companion object {
@JvmStatic
fun newInstance(isMyBoolean: Boolean) = SurveyPageOneFragment().apply {
val fragment = SurveyPageOneFragment()
arguments = Bundle().apply {
putBoolean("REPLACE WITH A STRING CONSTANT", isMyBoolean)
}
fragment.arguments
return fragment
}
}
fragment five
override fun onResume() {
Log.i("TAG", "onResume: survey page five")
super.onResume()
viewLifecycleOwner.lifecycle.currentState === Lifecycle.State.RESUMED
}
override fun onPause() {
Log.i("TAG", "onPause: survey page five")
super.onPause()
}
override fun onDestroy() {
super.onDestroy()
_binding = null
}
companion object {
@JvmStatic
fun newInstance(isMyBoolean: Boolean) = SurveyPageFiveFragment().apply {
val fragment = SurveyPageFiveFragment()
arguments = Bundle().apply {
putBoolean("REPLACE WITH A STRING CONSTANT", isMyBoolean)
}
fragment.arguments
return fragment
}
}
Upvotes: 1
Views: 26