#android #webview #progressdialog
#Android #webview #progressdialog
Вопрос:
Я перепробовал все, что знаю, как сделать, чтобы его отключить. Я хочу, чтобы он загрузил веб-страницу, а затем отключил ProgressDialog. Как это сделать?
package com.calebfultz.package;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnKeyListener;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;
public class Lists extends Activity {
private WebView webView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.web);
ProgressDialog pd = ProgressDialog.show(Lists.this, "",
"Loading. Please wait...", true);
// Create reference to UI elements
webView = (WebView) findViewById(R.id.web_engine);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("http://cfultz.tumblr.com");
// workaround so that the default browser doesn't take over
webView.setWebViewClient(new MyWebViewClient()
);
}
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
}
Ответ №1:
Возможно, вы захотите сделать вашу переменную ProgressDialog переменной-членом класса Lists и в вашем методе shouldOverrideUrlLoading добавить строку
pd.dismiss();
Комментарии:
1. Спасибо. Я пробовал это, и, к сожалению, это просто мгновенно убивает диалоговое окно прогресса, вместо того, чтобы ждать загрузки страницы.
Ответ №2:
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// Show your progress dialog here
prDialog = ProgressDialog.show(this, "", "Loading, please wait...", true);
super.onPageStarted(view, url, favicon);
}
public void onPageFinished(WebView view, String url) {
//Finish your progress dialog here
if (prDialog.isShowing() || prDialog != null) {
prDialog.dismiss();
}
super.onPageFinished(view, url);
}
Ответ №3:
Я думаю, вы можете переопределить функцию onPageFinished в MyWebViewClient: вы можете отклонить ProgressDialog в этой функции. Или вы можете переопределить onProgressChanged в MyWebChromeClient(расширяет WebChromeClient): когда прогресс равен 100, вы можете отключить ProgressDialog.
Ответ №4:
Пожалуйста, посмотрите этот код:
// the init state of progress dialog
mProgress = ProgressDialog.show(this, "Loading", "Please wait for a moment...");
// add a WebViewClient for WebView, which actually handles loading data from web
mWebView.setWebViewClient(new WebViewClient() {
// load url
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
// when finish loading page
public void onPageFinished(WebView view, String url) {
if(mProgress.isShowing()) {
mProgress.dismiss();
}
}
});
у меня все работает нормально ……… наслаждайтесь.
Ответ №5:
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
//start loading animation
//loading is a ProgressBar type
this.loading.setVisibility(0);
view.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
if(progress >= 100) {
this.loading.setVisibility(8);
}
}
});