The history of webview is not clearing... What is wrong with below code?
Web view Creation
mWebViewReport=(WebView)findViewById(R.id.report_page);
mW
The solution from Osama_Almaani works very fine! You can optimize your code by moving the flag into the WebViewClient implementation.
Define a field in your activity and use this instead of the anonymous declaration:
private MyWebViewClient myWebViewClient = new MyWebViewClient();
...
myWebView.setWebViewClient(myWebViewClient);
Enhance your WebViewClient class with a new method clearHistory():
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);
}
}
Now you can use this new method:
myWebViewClient.clearHistory();
mWebViewReport.loadUrl("file:///android_asset/help.html");
I think, clearHistory()
clears the back and forward list
. So the currently loaded url will still remain in the back list.
You can't clear history while the webview is loading a page (url) in order to clear the history setup onPageFinished listener as follows
declare a public var before the onCreate
boolean clearHistory = false;
now when you declare your mWebViewReport set this up
mWebViewReport.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url)
{
if (clearHistory)
{
clearHistory = false;
mWebViewReport.clearHistory();
}
super.onPageFinished(view, url);
}
});
Now when you call your help url insted of clearing the history just set clearHistory to true
mWebViewReport.loadUrl("file:///android_asset/help.html");
mWebViewReport.clearHistory(); // REMOVE THIS LINE
mWebViewReport.clearCache(true); // REMOVE THIS LINE
clearHistory = true; // ADD THIS LINE