2

私は自分のAndroidアプリでwebviewを使用しています。Webページが正常に読み込まれます。リンクをクリックすると、ブラウザではなくWebビューで新しいページが開きます。今、私の問題は、画面を傾けるとページが更新され、以前のページの代わりにホームページが読み込まれることです。どうすればこの問題を克服できますか?よろしくお願いします。私のコードは以下のとおりです。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.webview);

    webView = (WebView) findViewById(R.id.webView1);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.loadUrl("http://www.xyz.com");
    webView.getSettings().setLoadWithOverviewMode(true);
    webView.getSettings().setUseWideViewPort(true);
    webView.getSettings().setBuiltInZoomControls(true);
    webView.setWebViewClient(new MyWebViewClient());
}

私のwebviewclientクラス:

public class MyWebViewClient extends WebViewClient {

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    view.loadUrl(url);
    return true;
}}
4

2 に答える 2

2

向きが変わると、アクティビティが終了して再開されるからです。そのため、onCreate()が再度呼び出され、最初のURLがロードされます。Webビューの状態を保存し、向きが変わったときに復元する必要があります。

于 2012-08-18T09:43:24.687 に答える
0

私は会話に遅れていますが、このアイデアも本当に興味深いものです。

http://www.devahead.com/blog/2012/01/preserving-the-state-of-an-android-webview-on-screen-orientation-change/

基本的に:

1-savedInstanceStateを利用します

2-savedInstanceStateに基づいてプログラムでwebViewを作成するため、リロードは発生せず、傾斜時に元のwebViewの正確なコピーのみが作成されます。

于 2014-07-29T13:24:16.857 に答える