可能它会有一个简单的解决方案,但我在这里阅读了很多线程,但没办法。 在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);
}
答案 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)
作为一种解决方法,我做了以下活动。
通过这种方式,图像会在默认的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()