确定ViewPager中当前可见的片段

时间:2013-04-25 17:36:55

标签: android android-fragments android-viewpager

ViewPager我用它来显示几个片段,我TextView上也有FragmentActivity。我需要更改TextView中的文字,具体取决于ViewPager中当前选择的哪个片段。我遇到的问题是:ViewPager有一些缓存机制,它在用户真正可见之前实例化片段,例如当我在第三页的ViewPager片段中选择第二页时也会创建。更有甚者我无法确定内部片段是这个片段现在可见还是仅由ViewPager创建,但对用户来说并不真实。我已尝试使用OnPageChangeListener,但对其进行的更改对我来说是不可接受的(页面滚动,然后我的TextView已更改)

我真正需要的是什么:我需要确定ViewPager中当前可见的哪个片段,无论是来自FragmentActivity还是来自Fragment本身。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:7)

ViewPager.OnPageChangeListener是明显的方法。正如您所注意到的那样,onPageSelected(int position)在页面居中之前不会被调用(如果您正在通过触摸和保持慢慢滚动页面)。

  

我真正需要的是:我需要确定ViewPager中当前可见的片段,无论是FragmentActivity还是Fragment本身。我怎样才能做到这一点?

首先,您尚未定义“当前可见”。在ViewPager中,在它们之间滑动时可以看到2个页面,因此在滑动中哪一个“当前可见”?我的假设是你会认为哪个页面“更明显”是“当前可见”。

说完之后,我会考虑使用onPageScrolled (int position, float positionOffset, int positionOffsetPixels)positionOffset似乎可以为您提供所需的信息。我会用一些日志语句对它进行测试,以查看返回的数据。