У меня есть ViewPager, определенный в Activity, и множество фрагментов, последовательно отображаемых в ViewPager. В этих фрагментах есть динамически конструируемые чекбоксы и радиокнопки, которыми должен манипулировать пользователь. В тот самый момент, когда пользователь переходит на следующую страницу, мне нужно, чтобы пользовательские данные были извлечены и сохранены в объекте приложения. Я не могу понять, что такое стандартный способ сделать это. Поскольку фрагментов много, я решил использовать FragmentStatePagerAdapter. Будем рады любой помощи, заранее спасибо!
Обновление-1: у меня есть это:
pageAdapter = new MyPageAdapter(getSupportFragmentManager());
pager = (ViewPager) findViewById(R.id.viewpager);
pager.setAdapter(pageAdapter);
// detects viewpager page change
pager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
Log.i("TAG", "onPageSelected");
int index = pager.getCurrentItem();
MyPageAdapter adapter = ((MyPageAdapter) pager.getAdapter());
QuestionFragment fragment = (QuestionFragment) adapter.getItem(position);
if (fragment.rdbtn != null) {
for (int i = 0; i < fragment.rdbtn.length; i++) {
if (fragment.rdbtn[i].isChecked())
Log.i("TAG", "checked");
else
Log.i("TAG", "not checked");
}
}
// fragment.refresh();
}
});
При проверке отладчика после запуска ViewPager создает фрагменты 0 и 1 (стандартное поведение). Когда пользователь манипулирует фрагментом-0 и проводит пальцем, обработчик действительно вызывается, но с position=1, а не 0. И общедоступные элементы, которые я хочу прочитать, равны нулю!
ОБНОВЛЕНИЕ 2
Я замечаю в отладчике, что нужные мне данные хранятся в adapter.mCurrentPrimaryItem. Как получить CurrentPrimaryItem в коде?!