如何在viewpager中保存片段实例?

时间:2018-05-21 10:42:12

标签: android android-viewpager

我有一个包含4个片段的viewpager。第一次包含一个可扩展的列表视图,允许用户选择一些东西。然而,当我滑动到第三个片段时,第一个片段的视图被破坏,所以如果我再次滑回第一个片段,我将不再看到用户的选择。 有没有办法可以保存第一个片段的状态,这样当我从第三个或第四个片段向后滑动时,我仍然可以看到用户选择了什么?

注意:我确实尝试使用setOffscreenPageLimit()方法,但它给了我另一个问题。最后一个片段应该发送一个包含用户数据的报告,并将整个viewpager重置为初始状态,如果在发送报告后setOffscreenPageLimit(),我仍然拥有用户选择的所有片段。

提前致谢。

1 个答案:

答案 0 :(得分:1)

请按照步骤操作,这可以帮助您解决问题。 将所有用户选择保存在onSaveInstanceState中,并在onActivityCreated中再次创建时恢复。

public class MainFragment extends Fragment {

// These variable are destroyed along with Activity
private int someVarA;
private String someVarB;

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putInt("someVarA", someVarA);
    outState.putString("someVarB", someVarB);
}

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    someVarA = savedInstanceState.getInt("someVarA");
    someVarB = savedInstanceState.getString("someVarB");
}
}