onData上的Android空白屏幕在loadDataWithBaseURL中

时间:2012-01-23 15:31:06

标签: android webview android-webview

可能它会有一个简单的解决方案,但我在这里阅读了很多线程,但没办法。 在ListView中,如果我点击一行它会打开一个新的活动。在那个活动中,我创建了一个httpget,并使用httpget(检索到的网页的一部分)创建了一个html字符串。

所以我只做一个loadDataWithBaseURL("http://base_path.com/", html, mime, encoding, null)

它按预期工作,我查看带有链接和图像的网页。 现在问题来了......如果我点击一个图像,我会在那个窗口看到大图像,但是一旦按下手机上的“背面”,我就会看到一个白页。我知道它是由“null”参数引起的但是...我应该再次看到html页面了吗?我试图把“html”而不是null但我在webview中看到了html代码!

这是我的onKeyDown覆盖后退按钮:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    // Check if the key event was the BACK key and if there's history
    if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
        webView.goBack();
        return true;
    }
    // If it wasn't the BACK key or there's no web page history, bubble up to the default
    // system behavior (probably exit the activity)
    return super.onKeyDown(keyCode, event);
}

4 个答案:

答案 0 :(得分:7)

我在这个答案中找到了一些信息: Android: WebView's method goBack() shows a blank page

您需要提供一个URL,以便在您致电

时重新登录
loadDataWithBaseURL("http://base_path.com/", html, mime, encoding, null);

您正在传递null,因此默认为'about:blank'。试试这个:

String baseUrl = "http://base_path.com/";
loadDataWithBaseURL(baseUrl, html, mime, encoding, baseUrl + filename);

答案 1 :(得分:1)

试试这个:

webview.loadUrl("file:///android_asset/your_html.html");

而不是你的loadDataWithBaseURL

答案 2 :(得分:1)

作为一种解决方法,我做了以下活动。

  1. 删除了onKeyDown函数
  2. 删除了myWebView.setWebViewClient(new WebViewClient());
  3. 通过这种方式,图像会在默认的Android浏览器中加载,我可以使用后退按钮关闭它。

    走出WebView是不对的,但我别无选择。

答案 3 :(得分:1)

正如Gadgeteer提到的在loadDataWithBaseURL()上传递null会将'about:blank'添加到webview历史记录堆栈中。

为了避免此问题,我通过调用

来调用loadDataWithBaseURL()后立即清除webview历史记录
webview.clearHistory()

根据文件

  

public void clearHistory()

Tells this WebView to clear its internal back/forward list.

如果在调用loadDataWithBaseURL()之后调用clearHistory(),则webview不会返回空白页面,canGoBack()也会返回false;因为在clearHistory()

之后webview中没有后台堆栈