Как управлять страницей изменения ViewPager в объекте Fragment - PullRequest
0 голосов
/ 17 июня 2020

Я пишу ViewPager с некоторыми фрагментами. Во фрагменте есть VideoView. Вначале первый VideoView будет автоматически воспроизводиться, когда первый VideoView завершится, я хочу изменить страницу VideoView, поэтому я хочу вызвать setCurrentItem во фрагменте. Возможно ли это?

Ответы [ 2 ]

0 голосов
/ 17 июня 2020

вы можете использовать окно просмотра уведомлений по шине событий для перехода на следующую страницу. реализовать toNextPage fun c

void toNextPage() {
    if (viewPager.getAdapter().getCount() >= viewPager.getCurrentItem() + 1) {
        viewPager.setCurrentItem(viewPager.getCurrentItem() + 1);
    } else {
        Toast.makeText(this, "is end", Toast.LENGTH_SHORT).show();
    }
}
0 голосов
/ 17 июня 2020

Поскольку вы не упомянули язык, который используете, я отвечу на него как для Java, так и Kotlin.

  • Java :

    Создайте функцию в своей ViewPager's Activity как

    public void changeViewPagerPostition(int position) { 
    viewPager.setCurrentItem(position); 
    }
    

    и вызовите эту функцию из Fragment с передачей параметра публикации как

    ((YourActivity) getActivity()).changeViewPagerPostition(yourPostition);
    //Remember first item is at 0th postition and so on.
    

    Вы также можете объявить ViewPager как publi c stati c в своем Activity и получить доступ к ViewPager непосредственно в Fragment, но это не лучший способ.

  • Kotlin:

    В kotlin, я думаю, это немного проще, хотя вы можете использовать тот же способ, что и для Java, но я использую его, как и я также используйте ViewPager для большего количества вещей:

    Объявите ViewPager как глобальную переменную в вашем Activity как

    lateinit var viewPager : ViewPager
    

    Инициализируйте в нем onCreate() из Activity как

    viewPager = findViewById(R.id.viewPager)
    

    И используйте его во фрагменте и передайте текущее сообщение как

    (activity as YourActivity?)!!.setCurrentItem(yourPosition)
    

Теперь, когда ваше видео заканчивается, вы можете вызвать любой из этих способов в вашем Fragment, чтобы изменить currentItem из ViewPager.

...