2016-04-29 16 views
1

webviewは、前のページのURLとスクロール位置を保持していて、コンテンツを保持していないようです。私はjsonデータを持つメインページと、子ページを持っています。メインページは新しいウィンドウで子ページを開くためにいくつかのjsonデータをハイパーリンク形式で生成します。ラップトップブラウザでは、新しいウィンドウで子ページを閉じるだけです。しかし、webviewでは、私は戻るボタンを押しながら、それはメインページに戻ることができますが、それは再び読み込まれ、前のコンテンツを保持しないでください。リロードせずにwebviewを元に戻すにはどうすればよいですか?怒鳴るAndroid webviewリロードせずに前のページのコンテンツを保持しますか?

main.html with dynamic content 
<a href='child.html' target=target="_blank"...... 
press back button, success go back, but the main page reload and lost dynamic content 

私のコード:

webView.Settings.JavaScriptEnabled = true; 
webView.Settings.DomStorageEnabled = true; 
webView.Settings.DatabaseEnabled=true; 
webView.Settings.DatabasePath = AppConfig.Path; 

webView.SetWebViewClient(new HybridWebViewClient()); 


public override void OnBackPressed() 
{ 
    if (webView != null && webView.CanGoBack()) 
    { 
     webView.GoBack(); 
     GoBackFlag = true; 
    } 
    else { 
     base.OnBackPressed(); 
    } 
} 

public override bool ShouldOverrideUrlLoading(WebView view, string url) 
{ 
    if (GoBackFlag) 
    { 
     GoBackFlag = true; 
     return false; 
    } 
    else { 
     view.LoadUrl(url); 
    } 
    return true; 
} 

public override void OnPageStarted(WebView view, string url, Bitmap favicon) 
{ 
    if (GoBackFlag) 
    { 
     GoBackFlag = false; 
     return; 
    } 
} 

感謝〜覚えて

答えて

2

一つは、WebViewのは、完全なインターネットブラウザではないということです。 Webコンテンツをロードするために特別に設計されたビューです。単一のWebViewがあり、コンテンツの切り替え(戻るを含む)が行われる場合、毎回コンテンツをリロードする必要があります。

WebViewsが埋め込まれた別のフラグメントを使用してください。そのようにして、コンテンツをロードするとき、ロードされた状態(またはキャッシュされた状態)を維持する必要があります。その後、WebViewフラグメント間のすべてのナビゲーションを実行できます。

1つのアクティビティで複数のWebViewを使用し、画面に表示する内容に応じて表示フラグをGONEまたはVISIBLEに設定することもできます。

+0

これは残念です。私はいくつかの代替計画を行います、ありがとう~~ – Renkuei

関連する問題