我有一个包含4个片段的viewpager。第一次包含一个可扩展的列表视图,允许用户选择一些东西。然而,当我滑动到第三个片段时,第一个片段的视图被破坏,所以如果我再次滑回第一个片段,我将不再看到用户的选择。 有没有办法可以保存第一个片段的状态,这样当我从第三个或第四个片段向后滑动时,我仍然可以看到用户选择了什么?
注意:我确实尝试使用setOffscreenPageLimit()
方法,但它给了我另一个问题。最后一个片段应该发送一个包含用户数据的报告,并将整个viewpager重置为初始状态,如果在发送报告后setOffscreenPageLimit()
,我仍然拥有用户选择的所有片段。
提前致谢。
答案 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");
}
}