我在View
内恢复ViewPager
的状态时遇到问题。 ViewPager
的内容是一个展开FrameLayout
的视图。
问题是,如果以编程方式添加到FrameLayout.onRestoreInstanceState()
ViewPager
这是我的Activity.java
private ViewPager vPager;
private MainPagerAdapter mAdapter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
setContentView(R.layout.activity_layout);
// all the findViewById stuff
CustomView cv1 = new CustomView(this);
CustomView cv2 = new CustomView(this);
cv1.setId(R.id.custom_view_id_1);
cv2.setId(R.id.custom_view_id_2);
mAdapter = MainPagerAdapter();
mAdapter.addView(cv1);
mAdapter.addView(cv2);
vPager.setAdapter(mAdapter);
}
MainPagerAdapter
是this question
CustomView.java
@Override
protected Parcelable onSaveInstanceState() {
Log.d(TAG, "onSaveInstanceState() called");
}
@Override
protected void onRestoreInstanceState(Parcelable state) {
Log.d(TAG, "onRestoreInstanceState() called");
}
到目前为止,我的调查结果如下:
onSaveInstanceState()
将被调用,但onRestoreInstanceState()
不是ViewPager
调用适配器的instantiateItem()
函数之前,将调用Activity的onRestoreState函数。因此,当活动恢复其状态时,ViewPager
还没有任何子项,因此savedState不属于任何人所以我发现我需要做两件事之一:
ViewPager
在尝试恢复状态之前实例化该项目,或onRestoreInstanceState()
。我设法制作了第2号选项,但有没有办法做第1号选项?
答案 0 :(得分:-1)
如果我理解了您的问题,您可以使用mPage.setOffscreenPageLimit(4);
保存您的ViewPager项目状态.4是ViewPager中我的片段数量。