我处理这个问题的方法是在使用loadDataWithBaseURL
. 返回时,如果我的指针命中 1 我处于根级别并使用 .reload 重新加载根页面 loadDataWithBaseURL
。
仅供参考,我在带有片段的活动中使用此代码,因此片段实现了接口 IBackButtonListener ,它帮助我捕获主活动中的后退按钮并将事件传播到当前片段。如果片段返回 true,则表示它已经处理了该事件。
IBackbuttonListener.java
public interface IBackButtonListener {
public boolean onBackButtonPressed();
}
实现 IBackButtonListener 并具有从 html 数据加载的 webview 的片段。
private int historyStackPointer = 0;
...
@Override
public boolean onBackButtonPressed() {
boolean rtn = false;
if (webView.canGoBack()) {
if(historyStackPointer > 1) {
webView.goBack();
historyStackPointer--;
rtn = true;
}else{
if(historyStackPointer == 1) {
// Reload the html data
webView.loadDataWithBaseURL("file:///android_asset/", html_data, "text/html", "UTF-8", null);
historyStackPointer = 0;
rtn = true;
}else{
webView.loadUrl("about:blank");
rtn = false;
}
}
} else {
rtn = false;
}
return rtn;
}
html_data 是一个带有页面 html 的字符串。