代码之家  ›  专栏  ›  技术社区  ›  Rahul Rokade

如果暂停结束片段,然后打开Resumed,则自动更改初始位置并打开第一个片段

  •  0
  • Rahul Rokade  · 技术社区  · 3 年前

    **如果暂停结束片段,然后打开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
            }
        }
    
    0 回复  |  直到 3 年前
    推荐文章
    nat  ·  主页面破坏pre_init
    14 年前