【发布时间】:2014-06-24 19:08:25
【问题描述】:
我有一个 ViewPager,定义在一个 Activity 中,许多 Fragment 顺序显示在 ViewPager 中。在这些片段中有动态构造的复选框和单选按钮,用户应该对其进行操作。在用户滑动到下一页的那一刻,我需要检索用户数据并将其存储在 Application 对象中。我无法弄清楚这样做的标准方法是什么。由于有很多 Fragment,我选择使用 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(标准行为)。当用户操作 fragment-0 并滑动时,确实调用了处理程序,但位置 = 1,而不是 0。我要读取的公共元素为 null!
UPDATE-2
我在调试器中注意到我需要的数据存储在 adapter.mCurrentPrimaryItem 中。 如何在代码中检索 CurrentPrimaryItem?!
【问题讨论】:
标签: android android-fragments android-viewpager fragmentstatepageradapter