我在恢复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);
}
Run Code Online (Sandbox Code Playgroud)
MainPagerAdapter是一个来自这个问题的接受答案的课程
的源代码 CustomView.java
@Override
protected Parcelable onSaveInstanceState() {
Log.d(TAG, "onSaveInstanceState() called");
}
@Override
protected void onRestoreInstanceState(Parcelable state) {
Log.d(TAG, "onRestoreInstanceState() called");
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,这是我的发现:
onSaveInstanceState()将被召唤但onRestoreInstanceState()不是ViewPager调用适配器的instantiateItem()函数之前将调用Activity的onRestoreState 函数.因此,当活动恢复其状态时,ViewPager还没有任何子项,因此savedState不属于任何人所以我发现我需要做两件事之一:
ViewPager在尝试恢复状态之前实例化项目,或onRestoreInstanceState()手动调用CustomView .我以某种方式设法制作了2号选项,但有没有办法做第1号选项?
Hay*_*yan -1
如果我理解你的问题,你可以使用 4 来保存你的 ViewPager 项目状态,mPage.setOffscreenPageLimit(4);4 是我在 ViewPager 中的片段数量。
| 归档时间: |
|
| 查看次数: |
502 次 |
| 最近记录: |