Я работаю с FragmentStatePagerAdapter, используя этот пример.
Класс MyAdapter реализован следующим образом:
public static class MyAdapter extends FragmentStatePagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return NUM_ITEMS;
}
@Override
public Fragment getItem(int position) {
return ArrayListFragment.newInstance(position);
}
}
Класс ListFragment включает следующий метод для создания нового экземпляра:
/**
* Create a new instance of CountingFragment, providing "num"
* as an argument.
*/
static ArrayListFragment newInstance(int num) {
ArrayListFragment f = new ArrayListFragment();
// Supply num input as an argument.
Bundle args = new Bundle();
args.putInt("num", num);
f.setArguments(args);
return f;
}
Когда я создаю новый адаптер пейджера состояния в моей активности, вызывается getItem
, который в свою очередь вызывает метод newInstance
в классе ListFragment. Это здорово, когда я хочу создать новый фрагмент.
Но мне не ясно, как изменить getItem
(если требуется), чтобы получить объект фрагмента, когда он уже существует, и пользовательские страницы, например, с страницы 2 на страницу 1. Мне нужна моя активность для извлечения существующего ранее созданного фрагмента, чтобы он мог запускать внутренний класс AsyncMethod
, который находится в классе фрагмента.