gpt4 book ai didi

Android多个WebView保存实例

转载 作者:太空狗 更新时间:2023-10-29 16:25:01 29 4
gpt4 key购买 nike

我尝试使用 onSaveInstanceState() 和我的 WebViewonCreate() 中。当我只有一个 WebView 时,这工作得很好,但是要保存 3 个 WebViews,看起来它只是最后一个保存计数并覆盖其他保存;因此,当我在 onCreate() 中使用 restoreState() 方法时,第一个 WebView 具有第三个 WebView< 的内容 和其他 2 个是空的。

这是我的 Activity 代码示例:

@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);
}

我应该使用一些技巧为每个 View 使用另一个包吗?我是不是在我的代码中的其他地方做错了什么导致了这个或者这是标准行为?

最佳答案

第二次调用 saveState() 会覆盖第一次调用中保存的内容,第三次调用会覆盖第二次调用的内容。在 onSaveInstanceState() 执行结束时,bundle 仅包含第 3 个 WebView 的状态。

这就是为什么当您恢复第 3 个 WebView 的状态时会恢复到第一个 WebView

为每个 WebViews 创建一个新的 bundle 对象,并使用 this 将它们放入 outState Bundle 对象中为每个 Bundle 提供不同的 key :

public void putBundle (String key, Bundle value)

onCreate() 中获取基于 3 个键的 Bundle 并恢复状态。

关于Android多个WebView保存实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4172800/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com