2016-04-29 44 views
1

该webview似乎只保留上一页的网址和滚动位置,不保留内容?我有一个带有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并正在切换内容(包括返回),则每次都必须重新加载内容。

查看嵌入在其中的WebView使用不同的片段。这样,当你加载它应该保持加载(或缓存)的内容。然后,您可以在WebView片段之间执行所有导航。

您也可以在一个Activity中拥有多个WebView,并将可见性标志设置为GONE或VISIBLE,具体取决于屏幕上应显示的内容。

+0

很遗憾。我会做一些替代计划,谢谢~~ – Renkuei