**如果暂停结束片段,然后打开Resumed,则自动更改初始位置并打开第一个片段。***共有五页;一个容器显示所有片段列表,然后单击next并返回活动。我的案例出现了问题,打开片段,点击下一个到最后一个位置。工作是完美的,但点击android后台按钮,然后暂停最后一个片段,再次恢复,然后自动更改最初的第一个片段位置*
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)
}
片段一
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
}
}
片段五
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
}
}