【发布时间】:2020-03-19 19:16:25
【问题描述】:
我有一个包含 ViewPager 的片段。当我导航到这个片段时,我看到了预期的第一页。但是,如果我回击,然后再次导航到该片段,我会看到一个空白屏幕......
我在 Layout Inspector 中注意到的是,当我第二次导航到 ViewPager Fragment 时,ViewPager 存在,但没有任何页面片段在层次结构中。
这是我在 ViewPagerFragment 中设置 viewPager 的方法:
/**
* Variables
*/
var pageOneFragment = ForgotPasswordInitiateFragment()
var pageTwoFragment = ForgotPasswordSubmitCodeFragment()
var pageThreeFragment = ForgotPasswordSubmitPasswordFragment()
lateinit var mViewPager: ForgotPasswordViewPager
lateinit var mPagerAdapter: ForgotPasswordPagerAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.forgot_password_pager_fragment, container, false)
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
forgotPasswordViewModel = ViewModelProviders.of(this, viewModelFactory)
.get(ForgotPasswordViewModel::class.java)
pageOneFragment.viewPager = this
pageTwoFragment.viewPager = this
pageThreeFragment.viewPager = this
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
activity?.let {
mPagerAdapter = ForgotPasswordPagerAdapter(it.supportFragmentManager)
}
mViewPager = viewPager
mViewPager.adapter = mPagerAdapter
mViewPager.setListeners()
}
override fun onResume() {
super.onResume()
}
inner class ForgotPasswordPagerAdapter(fm: FragmentManager): FragmentPagerAdapter(fm) {
override fun getItem(position: Int): Fragment {
when (position) {
0 -> return pageOneFragment
1 -> return pageTwoFragment
2 -> return pageThreeFragment
else -> throw IllegalStateException("Pager position $position is out of bounds.")
}
}
override fun getCount(): Int {
return 3
}
}
我试图将我所有的 mViewPager 配置设置到 onResume 函数中,但同样的事情发生了。
viewPager 何时实际填充其页面?因为在我看来,它们是第一次被填充,但不是第二次......
编辑:
我在背面调试了 Activity 的片段,并注意到页面在那个片段堆栈中,但不是实际的 viewPager 片段。
【问题讨论】:
标签: android android-fragments android-viewpager