Android Webview在屏幕旋转时不应该丢失内容,但GUI应该正确更新。

5
我一直在尝试在屏幕方向变化和活动暂停时保留WebView的加载页面和JavaScript值。首先,我尝试重写configChanges,但这导致我的GUI无法正确更新(我有一个滑动抽屉,在屏幕方向更改时位置也会更改)。之后我尝试将WebView放入片段中,并调用setRetainInstance(true); 但是这并没有保持WebView的内容完整。我尝试通过不重新创建相同的对象来保持其生命力,但Android不允许以这种方式重复使用视图。

我的问题是:是否有方法可以在每次屏幕方向更改时不必重新加载WebView的内容,同时其他GUI组件也可以正确更新。

我希望我的问题足够清楚,如果有任何不清楚的地方,我很乐意说明。

编辑:我已经尝试在清单中添加android:configChanges =“keyboardHidden | orientation”,这就是我所说的“覆盖configchanges”

似乎唯一的解决方案是在屏幕方向更改时再次更新所有JavaScript变量。由于我还没有在JavaScript中运行大块的更新,因此无法提供关于此操作速度和资源的深入见解。

4个回答

4

我知道你已经尝试过了

 android:configChanges="keyboardHidden|orientation"

但是请尝试使用以下方法。
android:configChanges="keyboardHidden|orientation|screenSize"

在Android 3.2及以上版本中,“屏幕尺寸”会随着旋转而改变,这导致webview需要重新创建自身。如需更多信息,请参见下面链接的答案。

我在这里找到了答案 https://stackoverflow.com/a/11903546/655822


0

在你的AndroidManifest文件中添加以下内容..... activity

android:name=".YourActivityHere" 
android:configChanges="keyboardHidden|orientation"

我已经尝试过了,这就是我所说的覆盖configChanges。当我实现这个功能时,我的GUI不会被重新创建,例如我的滑动抽屉将无法正确更新。 - Wottah

0

尝试将此放入清单中

android:configChanges="orientation|keyboardHidden"></activity>

在你的类中加入这段代码

@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}

我已经尝试过了,这就是我所说的覆盖configChanges。当我实现这个功能时,我的GUI不会被重新创建,例如我的滑动抽屉将无法正确更新。 - Wottah

0
请在Android清单文件中添加以下行:

android:configChanges="keyboardHidden|orientation"


我已经尝试过了,这就是我所说的覆盖configChanges。当我实现这个功能时,我的GUI将不会重新创建,例如我的滑动抽屉将无法正确更新。 - Wottah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接