我处理这个问题的方法是使用loadDataWithBaseURL
加载根页面后保留一个本地堆栈指针,指向加载页面的数量。返回时,如果我的指针命中1,我在根级别并使用loadDataWithBaseURL
重新加载根页面。我使用这段代码在带有片段的活动中,所以这些片段实现了接口IBackButtonListener,它帮助我捕获主活动中的后退按钮并将事件传播到当前片段。如果该片段返回true,则意味着它处理了该事件。
IBackbuttonListener.java
public interface IBackButtonListener {
public boolean onBackButtonPressed();
}
片段实现IBackButtonListener并且具有从HTML数据加载的网页视图。
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的字符串。
我已经在检查它。从我在上面的问题描述中,我也能够得到历史网址(之前的页面)。当我执行goBack时,它显示一个空白页面。 – Bundeeteddee 2010-08-27 00:57:03