Если нам нужно создать несколько страниц, используя просмотрщик в Android, то должны ли мы создавать несколько фрагментов?Есть ли другая альтернатива? - PullRequest
0 голосов
/ 02 октября 2018

Я создаю приложение для Android-викторины, в котором я буду использовать viewpager.Я прошел некоторые уроки, в которых для каждой новой страницы создается новый класс для фрагмента / вкладок.Теперь, если я хочу иметь всего 15 страниц, тогда мне придется создавать столько классов?Разве нет другой альтернативы?

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

Каждая страница в ViewPager будет отличаться от экземпляра от Fragment, но не требуется, чтобы каждая страница отличалась class от Fragment.

В слишком простом приложении вы можете представить, что на каждой странице в ViewPager будет просто отображаться другое число.Этого можно добиться, создав класс OneFragment для отображения «1», класс TwoFragment для отображения «2» и т. Д.Или вы можете создать один класс NumberFragment и использовать пятнадцать различных экземпляров для отображения пятнадцати различных чисел:

public class NumberFragment extends Fragment {

    public static NumberFragment newInstance(int number) {
        Bundle args = new Bundle();
        args.putInt("number", number);

        NumberFragment fragment = new NumberFragment();
        fragment.setArguments(args);

        return fragment;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View root = inflater.inflate(R.layout.number_fragment, container, false);

        int number = getArguments().getInt("number");
        String numberText = String.valueOf(number);

        TextView numberView = root.findViewById(R.id.numberView);
        numberView.setText(numberText);

        return root;
    }
}

С этим на вашем FragmentPagerAdapter невероятно просто:

public class MyAdapter extends FragmentPagerAdapter {

    @Override
    public Fragment getItem(int position) {
        return NumberFragment.newInstance(position);
    }

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

Эта же концепция применима даже в более сложных приложениях.Поскольку каждая страница ViewPager имеет одинаковую структуру со своими данными, вы можете просто создать новый экземпляр одного класса Fragment, передав необходимую конфигурацию в newInstance().

. Вы можететакже смешайте и сопоставьте эту технику с той, в которой вы создаете новый подкласс Fragment для каждой страницы.Возможно, вы хотите, чтобы ваша первая и последняя страницы были уникальными, но тринадцать средних страниц в основном одинаковы.

0 голосов
/ 02 октября 2018

Вы должны создать Fragment для каждой отдельной страницы, которую хотите показать в ViewPager.Тогда вы можете выбрать каждый Fragment по позиции в FragmentPagerAdapter.

...