^(\d{3}|\d{6})$
У вас должен быть какой-то терминатор, иначе
\d{3}
будет соответствовать 1234. Вот почему я положил ^ и $ выше. Один из вариантов заключается в использовании поисковых запросов:(?
, чтобы убедиться, что ему не предшествует цифра (или в этом случае). Больше в Утверждения нулевой ширины Lookahead и Lookbehind .
Расширить WebViewClient и вызовите onPageFinished () следующим образом:
mWebView.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
// do your stuff here
}
});
Используйте setWebViewClient () и переопределите onPageFinished ()
Если вы хотите отображать индикатор выполнения, вам нужно следить за событием изменения хода выполнения, а не только за завершением страницы:
mWebView.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
//change your progress bar
}
});
Кстати, если вы хотите отображать только Indeterminate ProgressBar, переопределяя метод onPageFinished достаточно
Отследить состояние прогресса можно с помощью метода getProgress в классе webview.
Инициализируйте статус прогресса
private int mProgressStatus = 0;
затем AsyncTask для загрузки следующим образом:
private class Task_News_ArticleView extends AsyncTask<Void, Void, Void> {
private final ProgressDialog dialog = new ProgressDialog(
your_class.this);
// can use UI thread here
protected void onPreExecute() {
this.dialog.setMessage("Loading...");
this.dialog.setCancelable(false);
this.dialog.show();
}
@Override
protected Void doInBackground(Void... params) {
try {
while (mProgressStatus < 100) {
mProgressStatus = webview.getProgress();
}
} catch (Exception e) {
}
return null;
}
protected void onPostExecute(Void result) {
if (this.dialog.isShowing()) {
this.dialog.dismiss();
}
}
}