Android webview会在不重新加载的情况下保留上一页内容吗?

时间:2016-04-29 16:31:09

标签: android webview xamarin.android

webview似乎只保留上一页的网址和滚动位置,而不是保留内容?我有一个包含json数据的主页面和一个子页面。主页面生成一些超链接,形成一些json数据,在新窗口中打开子页面。在笔记本电脑浏览器中,我只需要在新窗口中关闭子页面。但是在webview中,当我按下后退按钮时,它可以返回主页面,但它会重新加载而不保留以前的内容。如何在不重新加载的情况下让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 个答案:

答案 0 :(得分:2)

要记住的一件事是WebView不是一个完整的互联网浏览器。它是一个专门用于加载Web内容的View。如果您有一个WebView并且正在切换内容(包括返回),则必须每次都重新加载内容。

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

您还可以在一个活动中拥有多个WebView,并根据应在屏幕上显示的内容将可见性标记设置为GONE或VISIBLE。

答案 1 :(得分:0)

我有同样的问题。我通过在新活动中打开新的Webview进行修复。根据需要,新的Web视图可以是:

  • 在相同活动的新实例中打开。确保-> android:launchMode =“ standard”
  • 在具有不同活动的新实例中打开。