我ViewPager
我用它来显示几个片段,我TextView
上也有FragmentActivity
。我需要更改TextView
中的文字,具体取决于ViewPager
中当前选择的哪个片段。我遇到的问题是:ViewPager
有一些缓存机制,它在用户真正可见之前实例化片段,例如当我在第三页的ViewPager
片段中选择第二页时也会创建。更有甚者我无法确定内部片段是这个片段现在可见还是仅由ViewPager
创建,但对用户来说并不真实。我已尝试使用OnPageChangeListener
,但对其进行的更改对我来说是不可接受的(页面滚动,然后我的TextView
已更改)
我真正需要的是什么:我需要确定ViewPager
中当前可见的哪个片段,无论是来自FragmentActivity
还是来自Fragment
本身。我怎样才能做到这一点?
答案 0 :(得分:7)
ViewPager.OnPageChangeListener
是明显的方法。正如您所注意到的那样,onPageSelected(int position)
在页面居中之前不会被调用(如果您正在通过触摸和保持慢慢滚动页面)。
我真正需要的是:我需要确定ViewPager中当前可见的片段,无论是FragmentActivity还是Fragment本身。我怎样才能做到这一点?
首先,您尚未定义“当前可见”。在ViewPager
中,在它们之间滑动时可以看到2个页面,因此在滑动中哪一个“当前可见”?我的假设是你会认为哪个页面“更明显”是“当前可见”。
说完之后,我会考虑使用onPageScrolled (int position, float positionOffset, int positionOffsetPixels)
。 positionOffset
似乎可以为您提供所需的信息。我会用一些日志语句对它进行测试,以查看返回的数据。