我想弄清楚如何解决 webview 上的方向问题。基本上每次用户在设备上更改方向时,程序都会变白并重新加载整个页面。这需要很长时间。
我希望它像所有其他程序一样工作,只需调整页面大小以适应方向。我已经尝试阅读有关该主题的其他文章,但是当我实现他们的解决方案时,它似乎并没有解决问题。
这是我当前的代码。
package testdev.HelloWebApp;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class HelloWebAppActivity extends Activity {
/** Called when the activity is first created. */
private WebView webView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
webView = (WebView)findViewById(R.id.webView);
WebSettings webSettings =webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webView.setWebViewClient (new HelloWebViewClient());
webView.loadUrl("http://google.com");
if (savedInstanceState != null)
((WebView)findViewById(R.id.webView)).restoreState(savedInstanceState);
}
private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack())
{
webView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
protected void onSaveInstanceState(Bundle outState ){
((WebView) findViewById(R.id.webView)).saveState(outState);
}
}
最佳答案
我遇到了同样的问题。当您翻转屏幕时 webView 重新启动的原因(至少在我的情况下)是您总是在 onCreate() 运行时初始化 webView,即使 webView 不为 null。
首先在您的 AndroidManifest.xml 中添加以下内容:
<activity android:configChanges="orientation">
然后,尝试添加一个 if 子句:
...
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//Add this
if(webView == null){
webView = (WebView)findViewById(R.id.webView);
WebSettings webSettings =webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webView.setWebViewClient (new HelloWebViewClient());
webView.loadUrl("http://google.com");
}
if (savedInstanceState != null)
((WebView)findViewById(R.id.webView)).restoreState(savedInstanceState);
}
...
关于android - 如何修复 Android 手机 webview 的旋转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8640501/