4

URLをロードしているWebビューがあります。タブレットの向きを変更すると、webview の URL が再び読み込まれます。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);
                }
        });
    }
4

3 に答える 3

1

@Pallavi の回答に加えて、http: //developer.android.com/guide/topics/resources/runtime-changes.html を読んで、リロードが発生する理由を理解してください。アクティビティの再開は、Android のアクティビティ ライフサイクルの重要な部分です。

于 2012-05-09T09:48:09.283 に答える