Android 调用ViewPager转换到下一个窗格?
当用户从一个窗格滑动到下一个窗格时,我是否可以调用回调?正如我的实验所揭示的,当前(主要)窗格/片段以及相邻的两个(左侧和右侧)都是“恢复的”,因此没有调用任何常规片段生命周期回调。我对此感兴趣是为了在与之关联的窗格离开后立即隐藏MediaController。您可以将Android 调用ViewPager转换到下一个窗格?,android,android-fragments,android-viewpager,Android,Android Fragments,Android Viewpager,当用户从一个窗格滑动到下一个窗格时,我是否可以调用回调?正如我的实验所揭示的,当前(主要)窗格/片段以及相邻的两个(左侧和右侧)都是“恢复的”,因此没有调用任何常规片段生命周期回调。我对此感兴趣是为了在与之关联的窗格离开后立即隐藏MediaController。您可以将OnPageChangeListener附加到您的ViewPager,以便在用户滑动到新页面时获取更新: viewPager.setOnPageChangeListener(new OnPageChangeListener() {
OnPageChangeListener
附加到您的ViewPager,以便在用户滑动到新页面时获取更新:
viewPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageScrollStateChanged(int state)
{
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels)
{
}
@Override
public void onPageSelected(int position)
{
Log.d("MainActivity", "New position = " + position);
}
});
如果您使用
FragmentPagerAdapter
,您的ViewPager页面将缓存在内存中。如果使用的是FragmentStatePagerAdapter
,则不会缓存它们。只要片段完全消失或出现,就会回调片段的setUserVisibleHint()
,隐藏或显示MediaController操作可以在此处完成
public class YourFragment extend android.support.v4.app.Fragment {
...
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
System.out.println("VISIBLE");
} else {
System.out.println("GONE");
}
}
...
}
诚然,这是我一直在寻找的,但现在我发现了另一个问题:我在前面的活动中从列表视图打开ViewPager。如果将MediaController的窗格从相邻窗格滑动到,则会显示该窗格。但是,如果使用MediaController将ViewPager直接打开到窗格,则它不会出现,即使在某个时候,我直接打开到该窗格时,OnPageChange()方法也会出错。如果不清楚,则通过OnPageChange()方法连接MediaController。有什么想法吗?我不能从描述中确切地说出问题出在哪里。如果你发布了一个新问题,其中包含一些代码片段和对所遇到的任何错误的描述,可能会更好。最后,我找到了解决问题的另一种方法。谢谢你的帮助。很高兴你找到了答案。祝你一切顺利。