如何从ViewPager收集数据?

时间:2016-07-19 01:23:47

标签: android android-fragments android-viewpager

我做了一个活动,它只是一个带有几个标签的viewpager。每个选项卡都像用户需要填写的表单。用户完成后,应收集来自视图寻呼机的数据并将其作为结果发回。我几乎有这个工作,但由于某种原因,当用户进入第三个选项卡时,我的第一个选项卡上的数据似乎被重置。我猜这是由于寻呼机中的某些视图回收。无论如何,我想知道是否有一些简单的方法可以从不同的选项卡中收集所有数据,或者我是否必须在activity和viewpager对象之间创建某种紧密耦合?

2 个答案:

答案 0 :(得分:2)

你必须按照这里所描述的那样使用SmartFragmentStatePagerAdapter&#34; https://guides.codepath.com/android/ViewPager-with-FragmentPagerAdapter&#34; <需要

vpPager.setOffscreenPageLimit(3);

您的问题应该得到解决。 :)

答案 1 :(得分:1)

如果距离当前页面2页,则viewpager将终止该片段。然后,当寻呼机位于距离它1步的页面上时,它会重新创建它。

您应该将表单数据移动到持有viewpager的activity / fragment中,并使用片段侦听器相应地更新数据

例如,您可以使用如下所示的片段侦听器将数据传入/传出包含的活动

public interface MyFragmentListener{
    void saveMyFormData(MyFormData formData);
    MyFormData getFormData();
}
private MyFragmentListener mListener;

//initialise fragment listener in onAttach (or elsewhere)

private void initFormView(){
    MyFormData data = mListener.getFormData();
    //do stuff with data
}

private void saveData(){
    mListener.saveMyFormData(myFormDataObject);
}