Как передать данные из фрагмента в другой фрагмент, который находится в пейджере представления? - PullRequest
0 голосов
/ 02 марта 2020

Описание:

У меня есть активность ( Отцовская активность ), в которой есть фрагмент ( Фрагмент отца ) внутри. Этот фрагмент имеет вкладки и имеет два фрагмента ( Фрагмент A и Фрагмент B ), которые изменяются при просмотре пейджера.

Активность отца отправляет данные Фрагмент отца , который должен доставить их в Фрагмент B

Вопрос:

Что я могу сделать с Отцовским фрагментом для передачи данных в Фрагмент B (который находится в пейджере просмотра)?

Дополнительно:

Кто-то сказал мне, что я могу использовать интерфейс , и я пытался изучить его, но я не смог найти хорошего учебника / объяснения.

Спасибо за чтение!

1 Ответ

0 голосов
/ 03 марта 2020

Привет @ Томас, я сделал вот так

 private class ViewPagerAdapter extends FragmentPagerAdapter {

    private Fragment fragment1 = Fragment1.getInstance();
    private Fragment fragment2 = Fragmen2.getInstance();

    ViewPagerAdapter(FragmentManager supportFragmentManager) {
        super(supportFragmentManager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);

    }

    @Override
    public Fragment getItem(int position) {
        if (position == 0) {
            return fragment1;
        } else {
            return fragment2;
        }
    }


    @Override
    public int getCount() {
        return  2 ;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return "";
    }

    Fragment1 getFragment1() {
        return (Fragment1) fragment1;
    }

    Fragment2 getFragment2() {
        return (Fragment2) fragment2;
    }
}

это мой код Fragemnt2:

public class Fragment2 extends Fragment {

private TextView text;
public static Fragment2 getInstance() {
    return new Fragment2();
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    return inflater.inflate(R.layout.fragmant_2, container, false);
}

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
     text = view.findViewById(R.id.text2);

}

public void reloadView(String data){
   text.setText(data);
}



}

и из адаптера viewpager я вызываю метод faragment 2 вот так

adapter.getFragment1().reloadView("data");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...