我有一个在 Activity 中定义的 ViewPager,以及在 ViewPager 中按顺序显示的许多片段。在这些片段中有动态构造的复选框和单选按钮,用户应该对其进行操作。在用户滑动到下一页的那一刻,我需要检索用户数据并将其存储在 Application 对象中。我无法弄清楚这样做的标准方法是什么。由于有很多 Fragment,我选择使用 FragmentStatePagerAdapter。欢迎任何帮助,在此先感谢!
Update-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 会实例化 Fragments 0 和 1(标准行为)。当用户操作 fragment-0 并滑动时,确实调用了处理程序,但位置 = 1,而不是 0。我要读取的公共元素为空!
更新-2
我在调试器中注意到我需要的数据存储在 adapter.mCurrentPrimaryItem 中。如何在代码中检索 CurrentPrimaryItem?!