0

我有一个在 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?!

4

1 回答 1

0

您可以pageChangeListener在您的活动中实现 a 并将其设置为 viewPager。然后,您可以拥有一个class abstract BaseFragment extends Fragment并声明一个抽象方法,例如 getData(),ViewPager 中的每个片段都扩展并覆盖该方法。在活动的 onPageSelected() 中,您可以访问这些数据。

于 2014-06-24T19:15:33.973 回答