我尽量保存和恢复的3状态WebViews
中使用我的活动onSaveInstanceState()
和restoreState()
我的方法WebView
中onCreate()
.当我只有一个时可以正常工作WebView
,但有3个WebViews
保存,看起来它只是最后一个保存计数并覆盖其他保存; 因此,当我使用该restoreState()
方法时onCreate()
,第一个WebView
具有第三个的内容而WebView
另外两个是空的.
以下是我的活动代码示例:
@Override public void onSaveInstanceState(Bundle outState) { ((WebView)findViewById(R.id.webview1)).saveState(outState); ((WebView)findViewById(R.id.webview2)).saveState(outState); ((WebView)findViewById(R.id.webview3)).saveState(outState); } @Override public void onCreate(Bundle savedInstanceState) { ((WebView)findViewById(R.id.webview1)).restoreState(savedInstanceState); ((WebView)findViewById(R.id.webview2)).restoreState(savedInstanceState); ((WebView)findViewById(R.id.webview3)).restoreState(savedInstanceState); }
我应该使用一些技巧为每个视图使用另一个包吗?我在代码中的其他地方做错了导致这种情况还是标准行为?
第二次电话会saveState()
覆盖第一次通话中保存的内容,第三次通话会覆盖第二次通话的内容.在onSaveInstanceState()
捆绑执行结束时,只包含第3个WebView
状态.
这就是为什么当你恢复第3个状态WebView
时恢复到第1个状态WebView
.
创建你的每一个的新的组合对象WebViews
,并把它们放到outState Bundle
使用对象这给出了每个不同的密钥Bundle
:
public void putBundle (String key, Bundle value)
在基于3个键onCreate()
获取Bundle
s并恢复状态.