【发布时间】:2014-03-06 15:36:26
【问题描述】:
我希望每次单击 webview 中的任何链接时都显示一个加载器。
目前在application start 只有它向我显示loader。
使用以下代码
每个负载加载器都有一段时间来,有时不是,不知道为什么会发生。
// Force links and redirects to open in the WebView instead of in a browser
mWebView.setWebViewClient(new WebViewClient() {
ProgressDialog progressDialog = null;
//If you will not use this method url links are opeen in new brower not in webview
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (progressDialog == null) {
// in standard case YourActivity.this
progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setMessage("Loading...");
progressDialog.show();
}
view.loadUrl(url);
return true;
}
//Show loader on url load
public void onLoadResource (WebView view, String url) {
if (progressDialog == null) {
// in standard case YourActivity.this
progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setMessage("Loading...");
progressDialog.show();
}
}
public void onPageFinished(WebView view, String url) {
try{
if (progressDialog.isShowing()) {
progressDialog.dismiss();
progressDialog = null;
}
}
catch(Exception exception){
exception.printStackTrace();
}
}
//Show error page
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
mWebView.loadUrl("file:///android_asset/error.html");
}
});
// Javascript enabled on webview
mWebView.getSettings().setJavaScriptEnabled(true);
//Load url in webview
mWebView.loadUrl(url);
}
【问题讨论】:
-
您是否在某处将
progressDialog变量归零?因为没有它,你的 if 只会为真一次...... -
没有完整代码的更新问题,请咨询
-
您在哪里关闭对话框?你在哪里清空你的 progressDialog 变量?如果您像您的个人资料所建议的那样有 C# 经验,您应该能够理解为什么您的 if 检查只有一次为真......
-
我得到了同样的方法,请检查有问题的更新代码。我在 onPageFinished 中做到了
-
我猜你在 c# 中也进行调试,对吧?试试看!
标签: android android-layout webview android-webview