vns*_*tty 28 android webview android-webview
webview的历史还没有清除......下面的代码出了什么问题?
Web视图创建
mWebViewReport=(WebView)findViewById(R.id.report_page);
mWebViewReport.setWebViewClient(new HelloWebViewClient());
mWebViewReport.getSettings().setBuiltInZoomControls(true);
Run Code Online (Sandbox Code Playgroud)
单击帮助按钮时加载帮助文件
mWebViewReport.loadUrl("file:///android_asset/help.html");
mWebViewReport.clearHistory();
mWebViewReport.clearCache(true);
Run Code Online (Sandbox Code Playgroud)
单击摘要按钮时加载摘要文件
mWebViewReport.loadUrl("file:///android_asset/summary.html");
//On back button click
if (mWebViewReport.canGoBack()) {
mWebViewReport.goBack();
return ;
}
Run Code Online (Sandbox Code Playgroud)
在这里,我也可以看到帮助页面......
小智 58
在webview加载页面(url)时,您无法清除历史记录,以便清除onPageFinished监听器的历史记录设置,如下所示
在onCreate之前声明一个public var
boolean clearHistory = false;
Run Code Online (Sandbox Code Playgroud)
现在当你声明你的mWebViewReport设置它时
mWebViewReport.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url)
{
if (clearHistory)
{
clearHistory = false;
mWebViewReport.clearHistory();
}
super.onPageFinished(view, url);
}
});
Run Code Online (Sandbox Code Playgroud)
现在当你打电话给你的帮助网址时,清除历史记录只需将clearHistory设置为true即可
mWebViewReport.loadUrl("file:///android_asset/help.html");
mWebViewReport.clearHistory(); // REMOVE THIS LINE
mWebViewReport.clearCache(true); // REMOVE THIS LINE
clearHistory = true; // ADD THIS LINE
Run Code Online (Sandbox Code Playgroud)
Osama_Almaani的解决方案非常好用!您可以通过将标志移动到WebViewClient实现来优化代码.
在您的活动中定义一个字段并使用它而不是匿名声明:
private MyWebViewClient myWebViewClient = new MyWebViewClient();
...
myWebView.setWebViewClient(myWebViewClient);
Run Code Online (Sandbox Code Playgroud)
使用新方法clearHistory()增强WebViewClient类:
private class MyWebViewClient extends WebViewClient {
private boolean clearHistory = false;
/**Use this instead of WebView.clearHistory(). */
public void clearHistory(){
clearHistory = true;
}
@Override
public void onPageFinished(WebView view, String url) {
if(clearHistory){
Log.d(TAG, "clearHistory now");
clearHistory = false;
myWebView.clearHistory();
}
super.onPageFinished(view, url);
}
}
Run Code Online (Sandbox Code Playgroud)
现在您可以使用这个新方法:
myWebViewClient.clearHistory();
mWebViewReport.loadUrl("file:///android_asset/help.html");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28096 次 |
| 最近记录: |