как передать данные из первого фрагмента в третий фрагмент с помощью FragmentPagerAdapter android - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть 3 фрагмента в FragmentPagerAdapter.Я могу передать данные из первого фрагмента во второй фрагмент с помощью интерфейса.Но не могу передать данные из первого фрагмента в третий фрагмент.

Я пытался использовать общие настройки для передачи данных, но я не хочу уничтожать первый фрагмент, поэтому я помещаю viewPager.setOffscreenPageLimit (2), затем делаютретий фрагмент не может получить общие настройки.

Ниже приведен мой класс с extends FragmentPagerAdapter:

    private static int NUM_ITEMS = 3;
private CharSequence[] title = {"Customer Details", "Activation Details", "Confirmation Details"};

public ActivationPagerAdapter(FragmentManager fm) {
    super(fm);
}

@Override
public Fragment getItem(int position) {
    switch (position){
        case 0:
            return new Customer_Fragment();
        case 1:
            return new ActivationDetailsFragment();
        case 2:
            return new ActivationSummaryFragment();
    }
    return null;
}

//Return the number of pages
@Override
public int getCount() {
    return NUM_ITEMS;
}

//Return the title of page
@Override
public CharSequence getPageTitle(int position){
    return title[position];
}

например, я пытаюсь перейти к данным от фрагмента один до фрагмента три, но не удалось с ошибкой Java.lang.ClassCastException: фрагмент не может быть приведен к фрагменту три

Ниже фрагмент первый:

public interface OnCustomerFragmentListener{
    void OnCustomerPassData(String data);
}

Ниже находится MainActivity:

@Override
public void OnCustomerPassData(String data) {
    String tag = "android:switcher:" + R.id.viewPager_Activation + ":" + 1;
    ActivationSummaryFragment f = (ActivationSummaryFragment) getSupportFragmentManager().findFragmentByTag(tag);
    f.displayReceivedData(data);
}

Ниже фрагмент третий:

public void displayReceivedData(String message)
{
    Log.i(TAG, message);
}

Спасибо.

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Ссылка ниже показывает, как передавать данные между фрагментом и инструментом в viewpager.

https://www.journaldev.com/14207/android-passing-data-between-fragments

Трюк для передачи данных во второй фрагмент или третий фрагмент или другие просто меняетсячисло в конце тега.

@Override
public void sendData(String message) {
    String tag = "android:switcher:" + R.id.viewPager + ":" + 1;//<--change to 2, then can pass data to third fragment
    FragmentTwo f = (FragmentTwo) getSupportFragmentManager().findFragmentByTag(tag);
    f.displayReceivedData(message);
}
0 голосов
/ 28 ноября 2018

Вы можете установить аргументы при загрузке нового фрагмента и можете получить аргументы из этого фрагмента в терминах связки.Вы можете установить аргументы, когда у вас есть обратный вызов слушателя смены пейджера.При изменении списка вы можете установить аргументы, а при загрузке фрагмента вы можете получить аргументы.Надеюсь, что это поможет вам.Для дальнейшей справки вы можете получить помощь в документации Google по обратному вызову.

И второй подход может быть LocalBroadCast.на OnScrollChangeListener вы можете отправлять трансляции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...