2012-02-07 3 views
5

Я использую веб-представление для отображения html-страниц, и я хочу показать диалог прогресса, пока страница не будет загружена. Когда это будет сделано, диалог исчезнет. Я использовал AsyncTask для этого, но диалог не отображается. Смотрите мой код ниже:Как показать диалог прогресса при загрузке страницы HTML в WebView

class DownloadAysnc extends AsyncTask<String, String, Void> 
    { 
    ProgressDialog progressDialog; 
     @Override 
      protected void onPreExecute() { 
      super.onPreExecute(); 
      progressDialog = ProgressDialog.show(OverView.this, "", "Please Wait ..."); 
     } 

     @Override 
      protected Void doInBackground(String... arg0) { 
      webView.loadUrl("http://marico.com/html/investor/overview.php"); 
     return null; 
     } 

     @Override 
      protected void onPostExecute(Void result){ 
      super.onPostExecute(result); 
      progressDialog.dismiss(); 
     } 
    } 

И если взять помощь Google Docs, чтобы показать веб-страницы, то HTML тегов отображается, но не на этой странице. Ниже приведен код:

String url = "http://google.co.in/"; 
String googleDocsUrl = "http://docs.google.com/viewer?url="+url; 
Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setDataAndType(Uri.parse(googleDocsUrl), "text/html"); 
startActivity(intent); 

this.myWebView.loadUrl(googleDocsUrl); 

Может кто-нибудь помочь мне с этим?

ответ

13

Используйте этот код:

webView.setWebViewClient(new WebViewClient() { 
    ProgressDialog prDialog; 
    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     prDialog = ProgressDialog.show(Activity.this, null, "loading, please wait..."); 
     super.onPageStarted(view, url, favicon); 
    } 

    @Override 
    public void onPageFinished(WebView view, String url) { 
     prDialog.dismiss(); 
     super.onPageFinished(view, url); 
    } 
}); 

webView.loadUrl(url); 
+0

, что я должен поставить (вид WebView, строка URL-адрес, ** Bitmap фавиконки **) Это дает мне ошибку времени компиляции на ** Bitmap фавиконки ** линии. Что я должен положить их. –

+0

Спасибо большое! –

+0

спасибо, много человек ... это спасло меня – Noman

1

Вы можете попробовать следующий код,

progDailog = ProgressDialog.show(loginAct,"Process ", "please wait....",true,true); 

new Thread (new Runnable() 
{ 
    public void run() 
    { 
     // your code goes here 
    } 
}).start(); 

Handler progressHandler = new Handler() 
{ 

    public void handleMessage(Message msg1) 
    { 
     progDailog.dismiss(); 
    } 
} 
2

Вы можете показать Progress в WebView в строке заголовка WebView. Here - полный пример для того, что показывает ProgressStatus в Title Бар WebView.

3
v.setWebChromeClient(new WebChromeClient(){ 
     @Override 
     public void onProgressChanged(WebView view, int newProgress) { 
      WebView v=(WebView)findViewById(R.id.wv); 
      //Toast.makeText(mContext, v.getUrl() + newProgress +"uploading...", Toast.LENGTH_SHORT).show(); 
      ProgressBar s=(ProgressBar)findViewById(R.id.progressBar1); 
      s.setMax(100); 
      s.setProgress(newProgress); 
      if(newProgress==100){       
       v.setVisibility(0); 
       //Toast.makeText(mContext, "upload finished...", Toast.LENGTH_SHORT).show(); 
     }else{ 
       v.setVisibility(8); 
       //Toast.makeText(mContext, "uploading...", Toast.LENGTH_SHORT).show(); 
      } 
     } 
    }); 
+1

Добро пожаловать в переполнение стека. Не могли бы вы подробнее рассказать о своем ответе. –

+1

Особенно, когда вы отвечаете на старый вопрос, который уже принял и одобрил ответы, предоставьте некоторое объяснение. Как ваш ответ отличается и лучше, чем ранее принятый ответ? –