我有一个活动“ A”,里面有一个ViewPager(带有TabLayout)。由于ViewPager处理片段的生命周期,因此viewPager包含2个片段“ X”和“ Y”。当活动恢复时,片段也将恢复。
最初启动活动时,第一个选项卡-“ X”片段处于焦点并显示UI,在此期间,我得到了一个软键盘。 (此键盘是通过在“ Y”片段的onResume期间以1.5秒的延迟产生mainUIThread来启动的。)
问题是,为什么在onResume期间,“ Y”片段的onResume会受到干扰,而“ X”片段的选项卡却会产生干扰?有办法避免吗?
我只想显示“ Y”片段而不是“ X”片段的键盘。由于“ Y”框架的onResume可以某种方式处理键盘,因此键盘变得可见。
答案 0 :(得分:1)
两个片段的onResume应该是独立的,并且不应影响另一个片段,但是如果发生这种情况,我建议您不要直接在简历上调用片段的,而是使用活动的onresume,在那里检查活动片段,然后创建resumeMethod它在每个片段的onresume中具有所需的所有内容,并在恢复时调用活动片段的,例如,如果片段A是活动的,则调用fragmentA.resumeMethod(),这样就可以避免错误。
答案 1 :(得分:1)
如何使用 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) {}
})