2011-10-04 7 views
2

私の質問は、方向変更後のWebViewの処理に関する多くの既存の質問に関連しています。Android WebView restoreState freeze

私はアクティビティが破壊されていないことを知っています。そのため、onSaveInstanceState()を使用して状態を保存し、後でrestoreState()で復元します。

これはほとんどの場合、うまく動作します。しかし、私は方向をあまりにも速く変更すると、私の活動を開始したり、別のレイアウトから戻った後にWebViewオブジェクトを作成したりした直後にはなりません。デバッグでは、WebViewの状態が保存されていることがわかります(方向変更が発生したときに、すべてのオブジェクトが作成され準備されています)。状態を復元しようとしますが、何とかできません。どんな種類のエラーもありませんが、ページがロードされることはありません、私は無限の白い画面が表示されます。 WebView.reload()を呼び出すことも役に立ちません。

これはどうして起こりますか?私が言ったように、オリエンテーションの変更時にすべてのオブジェクトが作成され、loadUrl()メソッドが呼び出されたので、状態を正しく保存する必要があります。

答えて

1

WebViewバンドルを確認してください。 EMPTYの場合は、状態を復元しないでください。

if (!bundleObject.isEmpty()) { 
    mWebView.restoreState(bundleObject); 

}

+0

はい、それは正解です!私は(bundleObject!= null)をチェックしただけで十分ではありませんでした。 isEmpty()関数はトリックを行います。 また、私はあなたができることを知りました。 WebBackForwardList retval = myWebView.restoreState(bundleObject); retvalがnullでないかどうかを確認します。 – Krzychu