Правильно, это быстрый ответ, вы должны действительно реализовать свой собственный класс для WebViewClient, вы должны показать диалоговое окно и в этом классе, но вы поймете это.
Во-первых, сделайте ваш диалог глобальным (в вашем реальном приложении вы можете захотеть передать его своему клиенту или объявить его в веб-клиенте, а затем переопределить также onPageStarted).
ProgressDialog dialog;
тогда просто:
webview.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
dialog.dismiss();
}
});
public void onClick(View v){
switch(v.getId()){
case R.id.refresh:
dialog = ProgressDialog.show(Quotes.this, "", "Loading...", true);
webview.reload();
}
}
}
Это API, который вам нужен: WebViewClient
EDIT
Хорошо, это меня раздражало, вот правильный путь:
public class Quotes extends Activity implements OnClickListener{
private WebView webview;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
webview = (WebView) findViewById(R.id.scroll);
webview.getSettings().setJavaScriptEnabled(true);
webview.setWebViewClient(new MyWebViewClient(this));
webview.loadUrl("http://www.dgdevelco.com/quotes/quotesandroid.html");
findViewById(R.id.refresh).setOnClickListener(this);
}
public void onClick(View v){
switch(v.getId()){
case R.id.refresh:
webview.reload();
break;
}
}
}
Новый класс:
public class MyWebViewClient extends WebViewClient {
private Context mContext;
private ProgressDialog mDialog;
public MyWebViewClient(Context context){
mContext = context;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
mDialog = ProgressDialog.show(mContext, "", "Loading...", true);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
mDialog.dismiss();
}
}