当我从纵向更改为横向时,我的Webview重新加载

时间:2011-04-12 00:02:28

标签: webview

我有一个简单的WebView在Android上运行Web应用程序。问题是当我旋转手机将其更改为横向webview重新加载并返回到开头时。

如何阻止此操作?

罗恩

7 个答案:

答案 0 :(得分:49)

从Android 3.2(API级别13)开始,当设备在纵向和横向之间切换时,“屏幕尺寸”也会发生变化。因此,如果要在开发API级别13或更高级别(由minSdkVersion和targetSdkVersion属性声明)时由于方向更改而阻止运行时重新启动,则除了“orientation”值之外,还必须包含“screenSize”值。也就是说,你必须转发

<activity android:configChanges="orientation|screenSize">

以下是文档:http://developer.android.com/guide/topics/resources/runtime-changes.html

答案 1 :(得分:7)

可以通过覆盖您的活动中的onSaveInstanceState(Bundle outState)并从Webview调用saveState来解决此问题:

blog post可能会对您有所帮助。

答案 2 :(得分:6)

将以下内容添加到AndroidManifest:

android:configChanges="orientation|keyboard|keyboardHidden"

所以看起来应该是这样的:

<activity android:name=".MyActivity" 
          android:label="@string/app_name" 
          android:configChanges="orientation|keyboard|keyboardHidden">

显然,如果您的WebView需要键盘支持,则不要包含键盘选项。

答案 3 :(得分:3)

在oncreate

之前添加
@Override
protected void onSaveInstanceState(Bundle outState) {
webview.saveState(outState);
}

以这种方式编写oncreate。最终

public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layoutname);
if (savedInstanceState != null)
{
((WebView)findViewById(R.id.webview)).restoreState(savedInstanceState);
}
else
{
webview.loadUrl("http://www.playbuzz.org/");
}

}

在Androidmanifest下插入活动

android:configChanges="keyboardHidden|orientation"

答案 4 :(得分:2)

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

在您的活动中添加以上方法..和

机器人:configChanges = “键盘| keyboardHidden |取向”

清单文件中的

答案 5 :(得分:1)

上述解决方案的问题是,在webview重绘内容之前,它会将屏幕呈现一段时间。

尝试使用 android:configChanges =“orientation | keyboardHidden”在AndroidManifest.xml文件中,用于显示webview的活动。这应该会有所帮助。

答案 6 :(得分:1)

添加活动

android:configChanges="keyboardHidden|orientation"