ViewPager - 第一个片段的恢复干扰第二个片段



我有一个活动"A",里面有一个ViewPager(带TabLayout(。viewPager包括两个片段"X"one_answers"Y",因为viewPager处理片段的生命周期。当活动处于恢复状态时,片段也会转到恢复状态。

当我最初启动活动时,第一个选项卡-"X"片段处于焦点并显示UI,在此期间,我得到了一个软键盘。(该键盘是通过在"Y"片段的onResume期间生成延迟1.5秒的mainUIThread来启动的(。

问题是,为什么在onResume过程中,"Y"片段的onResume会干扰"X"片段的选项卡?有办法避免它吗?

我想只显示"Y"片段的键盘,而不显示"X"片段。由于"Y"帧的onResume以某种方式处理键盘,因此键盘变得可见。

两个fragment onResume都应该是独立的,不应该影响另一个,但如果发生这种情况,我可以建议你不要直接在resume上调用fragment,而是使用activity的onResume,检查活动的fragment并创建resumeMethod,它在每个fragment的onresue中都有你需要的所有东西,像fragmentA.resumeMethod((一样,如果fragmentA是活动的,这样就可以避免错误。

使用OnPageChangeListener怎么样?

您可以在选择Y片段时显示键盘,在选择其他页面时隐藏键盘。

my_view_pager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
override fun onPageSelected(position: Int) {
if (position == yFragmentPosition) {
showKeyboard()
} else {
hideKeyboard()
}
}
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {}
override fun onPageScrollStateChanged(state: Int) {}
})

最新更新