在 WebView 中维护导航历史
Maintain navigation history in WebView
在我的应用程序中,我有主要的 activity 和 child 活动。主要 activity 上的操作会打开 child activity。每个 child activity 加载的网页都有各种 url 都指向服务器位置。
我可以导航到所有 url,但是当我按返回键时,我没有被重定向到上一页。相反,它存在并将我带到主要 activity。后退按钮操作应导航到最后一个 url 位置。怎么做?
您需要将每个 url 添加到一个 List 对象,然后使用该对象返回导航。
private LinkedList<String> navigationHistory;
@Override
protected void onCreate(Bundle savedInstanceState) {
....
mWebView.setWebViewClient(new MyWebViewClient());
....
}
@Override
public void onBackPressed() {
if (navigationHistory.size() > 0) // Check if the url is empty
{
navigationHistory.removeLast(); // Remove the last url
if (navigationHistory.size() > 0) {
// Load the last page
mWebView.loadUrl(navigationHistory.getLast());
} else {
super.onBackPressed();
}
} else {
super.onBackPressed();
}
}
private class MyWebViewClient extends WebViewClient {
@Override
public void onPageFinished(WebView view, String url) {
if (!navigationHistory.contains(url)) // Check for duplicate urls
navigationHistory.add(url); // add each loading url to List
super.onPageFinished(view, url);
}
}
在我的应用程序中,我有主要的 activity 和 child 活动。主要 activity 上的操作会打开 child activity。每个 child activity 加载的网页都有各种 url 都指向服务器位置。 我可以导航到所有 url,但是当我按返回键时,我没有被重定向到上一页。相反,它存在并将我带到主要 activity。后退按钮操作应导航到最后一个 url 位置。怎么做?
您需要将每个 url 添加到一个 List 对象,然后使用该对象返回导航。
private LinkedList<String> navigationHistory;
@Override
protected void onCreate(Bundle savedInstanceState) {
....
mWebView.setWebViewClient(new MyWebViewClient());
....
}
@Override
public void onBackPressed() {
if (navigationHistory.size() > 0) // Check if the url is empty
{
navigationHistory.removeLast(); // Remove the last url
if (navigationHistory.size() > 0) {
// Load the last page
mWebView.loadUrl(navigationHistory.getLast());
} else {
super.onBackPressed();
}
} else {
super.onBackPressed();
}
}
private class MyWebViewClient extends WebViewClient {
@Override
public void onPageFinished(WebView view, String url) {
if (!navigationHistory.contains(url)) // Check for duplicate urls
navigationHistory.add(url); // add each loading url to List
super.onPageFinished(view, url);
}
}