Fragment对象中如何控制ViewPager换页
How to control ViewPager change page in Fragment object
我用一些片段写了一个 ViewPager。在片段中,有VideoView。一开始,第一个VideoView会自动播放,当第一个VideoView结束后,我想改变VideoView的页面,所以我想在Fragment中调用setCurrentItem。这可能吗?
由于您没有提到您使用的语言,我将为 Java 和 Kotlin 回答。
Java:
在 ViewPager's
Activity 中创建一个函数作为
public void changeViewPagerPostition(int position) {
viewPager.setCurrentItem(position);
}
然后从 Fragment
调用此函数,将 postition 参数作为
传递
((YourActivity) getActivity()).changeViewPagerPostition(yourPostition);
//Remember first item is at 0th postition and so on.
您还可以在 Activity
中将 ViewPager 声明为 public 静态,并且可以在 Fragment
中直接访问 ViewPager,但这不是首选方式。
科特林:
在科特林中,我相信这有点容易,虽然你可以使用与 Java 完全相同的方式,但我使用这种方式,因为我也使用 ViewPager
来做更多的事情:
在您的 Activity
中将 ViewPager 声明为全局变量
lateinit var viewPager : ViewPager
在里面初始化Activity
的onCreate()
为
viewPager = findViewById(R.id.viewPager)
并在片段中使用它并将您当前的职位作为
传递
(activity as YourActivity?)!!.setCurrentItem(yourPosition)
现在,当您的视频结束时,您可以在 Fragment
中调用这些方法中的任何一种来更改 ViewPager
的 currentItem
。
您可以使用 eventbus 通知 viewpager 到下一页。
实施 toNextPage func
void toNextPage() {
if (viewPager.getAdapter().getCount() >= viewPager.getCurrentItem() + 1) {
viewPager.setCurrentItem(viewPager.getCurrentItem() + 1);
} else {
Toast.makeText(this, "is end", Toast.LENGTH_SHORT).show();
}
}
我用一些片段写了一个 ViewPager。在片段中,有VideoView。一开始,第一个VideoView会自动播放,当第一个VideoView结束后,我想改变VideoView的页面,所以我想在Fragment中调用setCurrentItem。这可能吗?
由于您没有提到您使用的语言,我将为 Java 和 Kotlin 回答。
Java:
在
ViewPager's
Activity 中创建一个函数作为public void changeViewPagerPostition(int position) { viewPager.setCurrentItem(position); }
然后从
传递Fragment
调用此函数,将 postition 参数作为((YourActivity) getActivity()).changeViewPagerPostition(yourPostition); //Remember first item is at 0th postition and so on.
您还可以在
Activity
中将 ViewPager 声明为 public 静态,并且可以在Fragment
中直接访问 ViewPager,但这不是首选方式。科特林:
在科特林中,我相信这有点容易,虽然你可以使用与 Java 完全相同的方式,但我使用这种方式,因为我也使用
ViewPager
来做更多的事情:在您的
Activity
中将 ViewPager 声明为全局变量lateinit var viewPager : ViewPager
在里面初始化
Activity
的onCreate()
为viewPager = findViewById(R.id.viewPager)
并在片段中使用它并将您当前的职位作为
传递(activity as YourActivity?)!!.setCurrentItem(yourPosition)
现在,当您的视频结束时,您可以在 Fragment
中调用这些方法中的任何一种来更改 ViewPager
的 currentItem
。
您可以使用 eventbus 通知 viewpager 到下一页。 实施 toNextPage func
void toNextPage() {
if (viewPager.getAdapter().getCount() >= viewPager.getCurrentItem() + 1) {
viewPager.setCurrentItem(viewPager.getCurrentItem() + 1);
} else {
Toast.makeText(this, "is end", Toast.LENGTH_SHORT).show();
}
}