ViewPager-第一个片段的onResume干扰了第二个片段

问题描述 投票:0回答:1

我有一个活动“ A”,里面有一个ViewPager(带有TabLayout)。由于ViewPager处理片段的生命周期,因此viewPager包含2个片段“ X”和“ Y”。当活动继续进行时,片段也将继续进行。

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

问题是,为什么在onResume期间“ Y”片段的onResume会干扰而“ X”片段的选项卡会干扰?有办法避免吗?

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

android android-fragments android-viewpager onresume
1个回答
0
投票

两个片段的onResume应该是独立的,不应影响另一个。但是,如果发生这种情况,我建议您不要直接在简历上调用片段的,而是使用活动的onresume,在那里检查活动片段,然后创建resumeMethod,在每个片段的onresume中拥有所需的所有内容,并在恢复时调用活动片段的,例如,如果片段A是活动的,则调用fragmentA.resumeMethod(),这样可以避免出现错误。


0
投票

如何使用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) {}
})
© www.soinside.com 2019 - 2024. All rights reserved.