Изменить текущий фрагмент ViewPager из другого фрагмента - PullRequest
0 голосов
/ 23 января 2020

У меня есть Fragment, который содержит viewpager.

внутри ViewPager У меня есть еще 3 фрагмента, Fragment-A, Fragment-B и Fragment-C.

Внутри Fragment A У меня есть Button, в Button onClick() Я хочу изменить текущий элемент на Fragment C.

Как этого добиться? Пожалуйста, помогите

Ответы [ 3 ]

1 голос
/ 23 января 2020

Если кнопка не находится в главном фрагменте, вам необходимо определить интерфейс для связи между вашим основным фрагментом и субфрагментами, т.е. фрагментом AB C.

public interface GoToNextFragment {
void onGoToFragment(int index);
}

Ваш MainFragmet должен будет реализовать этот интерфейс и метод, который сопровождает его:

public class MainFragment extends Fragment implements GoToNextFragment {
//Your regular methods...
@Override
public void onGoToFragment(index) {
if (myAdapter != null) {
myAdapter.setCurrentItem(index);
}
}

Все еще в вашем MainFragment, установите интерфейс для ваших фрагментов:

fragment1.setInterface(this);
fragment2.setInterface(this);

В ваших фрагментах добавьте метод setInterface:

private GoToNextFragment mInterface;

public void setInterface(GoToNextFragment i) {
mInterface = i;
}

И, наконец, во фрагменте a запустите эффект с помощью:

button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mInterface != null) {
  mInterface.onGoToFragment(2);
}
});
0 голосов
/ 23 января 2020

В свой clickHandler добавьте этот метод viewpager.setCurrentItem (int index)

0 голосов
/ 23 января 2020
viewpager.postDelayed(new Runnable() {

        @Override
        public void run() {
            viewpager.setCurrentItem(2);
        }
    }, 100);

Здесь 2 - ваш фрагмент Фрагмент C.

Обновление

Нет необходимости создавать объект viewpager во Фрагменте A. Просто создайте один интерфейс которые расширяются в ваших Activity или Fragment, которые содержат ViewPager, и внедряют его во фрагмент А.

...