4

私はURLをロードしているwebviewを持っています。タブレットの向きを変更した場合、ウェブビューの読み込みにURLが再度表示されます。 URLの読み込みを再開しないように、向きを変更したときにwebviewの状態を保持するにはどうすればいいですか?これまでのところ私はこれを試してみた: - あなたのマニフェストファイルでハニカムのオリエンテーションの変更に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); 
       } 
     }); 
    } 

答えて

10

、ウェブ・ビューの活動の書込みのために:

android:configChanges="orientation|screenSize" 

新しいAPIのためのがあまりにもscreenSizeプロパティを追加...

+0

こんにちはパラヴィのために、私は両方のモードのために異なるレイアウトを使用しています。これを有効にすると、android:configChanges = "orientation"はwebview状態を保持しますが、実際にはレイアウトを崩してしまいます。 –

+0

この場合、使用可能なスペースに応じて調整するために、 'RelativeLayout'を使用する必要があります。 – Pallavi

+0

私はすでにそれを使用しています....しかし、webviewの下の画面の下部にあるボタンのサイズは両方の方向によって異なります。私がポートレートモードで自分の活動を開始し、それを風景モードにすると、私にポートレートモードのボタンが表示され、その逆もあります。 –

1

@Pallaviの回答に加えて、http://developer.android.com/guide/topics/resources/runtime-changes.htmlを読んでくださいなぜリロードが発生するを理解してください。アクティビティの再起動は、Androidのアクティビティライフサイクルの不可欠な部分です。あなたのマニフェストファイルで

+0

@Bananewizen - 私は既に文書を読みました。 onSaveInstanceStateを使用して画像、文字列などを復元できますが、webviewの状態を保存することはできません。 –

1

は、ウェブ・ビューの活動

android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" 
関連する問題