Webview重新加载蜂巢中的方向变化

问题描述:

我有一个web视图,它正在加载一个url。如果我更改平板电脑的方向,则webview加载的网址会再次显示。如何保持方向更改的webview状态,以便它不会重新加载url。到目前为止,我已经试过这样: -Webview重新加载蜂巢中的方向变化

@Override 
    public void onSaveInstanceState(Bundle savedInstanceState) { 
     //Save the state of Webview 
     wv.saveState(savedInstanceState); 
     super.onSaveInstanceState(savedInstanceState); 
    } 

    @Override 
    protected void onRestoreInstanceState(Bundle savedInstanceState) { 
     super.onRestoreInstanceState(savedInstanceState); 
     // Restore the state of webview 
     wv.restoreState(savedInstanceState); 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    setContentView(R.layout.html); 

    if(savedInstanceState!=null){ 
     // Restore webview state 
     wv.restoreState(savedInstanceState); 
    } 

    WebView wv = (WebView) findViewById(R.id.webView1); 

    wv.getSettings().setJavaScriptEnabled(true); 
     wv.getSettings().setBuiltInZoomControls(true); 
     wv.setPadding(0, 0, 0, 0); 
     wv.setInitialScale(50); 
     wv.getSettings().setLoadWithOverviewMode(true); 
     wv.getSettings().setUseWideViewPort(true); 

     _dialog = ProgressDialog.show(HtmlActivity.this, "", "Loading...", true, true); 
     _dialog.setCancelable(true); 
     _dialog.show(); 

     wv.loadUrl("http://www.samsung.com"); 

     wv.setWebViewClient(new WebViewClient() 
     { 

       @Override 
       public boolean shouldOverrideUrlLoading(WebView view, String url) { 

        return super.shouldOverrideUrlLoading(wv, url); 
       } 

       @Override 
       public void onPageStarted(WebView view, String url, Bitmap favicon) { 
        //_dialog =ProgressDialog.show(HtmlActivity.this, "", "Please wait..."); 
         super.onPageStarted(wv, url, favicon); 
       } 

       @Override 
       public void onPageFinished(WebView view, String url) { 
        try{ 
         _dialog.dismiss(); 
         }catch (Exception e) { 
          // TODO: handle exception 
         } 
         // super.onPageFinished(wv, url); 
       } 
     }); 
    } 

在你的清单文件,用于Web视图的活动写:

android:configChanges="orientation|screenSize" 

较新的API添加screenSize属性太...

+0

Pallavi嗨,我用不同的布局两种模式。虽然这个启用android:configChanges =“orientation”保留了webview状态,但实际上却弄乱了布局。 –

+0

在这种情况下,您应该使用'RelativeLayout',以便根据可用空间自行调整。 – Pallavi

+0

我已经在使用....但webview下方屏幕底部的按钮大小在两个方向上都不相同。所以如果我在纵向模式下开始我的活动并将其旋转到横向模式,它会向我显示纵向模式的按钮,反之亦然。 –

除了@Pallavi的回答,请阅读http://developer.android.com/guide/topics/resources/runtime-changes.html了解为什么重新加载发生了。重新开始活动是Android中活动生命周期的重要组成部分。

+0

@Bananewizen - 我已经阅读过这些文档。我能够使用onSaveInstanceState恢复图像,字符串等,但我没有通过保存webview的状态。 –

在你的清单文件,用于Web视图的活动

android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"