2012-12-08 212 views
2

如何在運行此代碼時顯示加載圖像?在加載數據之前顯示加載到Android的webview

HttpClient client = new DefaultHttpClient(); 
     HttpGet request = new HttpGet("http://www.google.com"); 
     try 
     { 
      HttpResponse response = client.execute(request); 
      BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); 
      String line; 
      StringBuilder str = new StringBuilder(); 
      while((line = reader.readLine()) != null) { 
       str.append(line); 
     } 
      objwebview.loadData(str.toString(), "text/html", "UTF-8"); 
    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
     objwebview.loadData(e.toString(), "text/html", "UTF-8"); 
    } 
+0

使用ProgressDialog加載對話框,你打的服務器之前,啓動對話,並得到響應後,將其連接到主線程,並關閉該對話框 –

回答

3

更改您的代碼,用於顯示從UI線程中使用

new Getdataasynktask().execute(""); 

執行此的AsyncTask使用加載條AsyncTask

private class Getdataasynktask extends AsyncTask<String, Void, String> { 

ProgressDialog progressDialog = new ProgressDialog(context); 

     @Override 
     protected void onPostExecute(String result) {  
     // show loaging bar here 

    progressDialog.setMessage("Loading..."); 
    progressDialog.setCancelable(false); 
    progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
    progressDialog.setProgress(0); // set percentage completed to 0% 
    progressDialog.show(); 

     } 

     @Override 
     protected String doInBackground(String... params) { 
      String strdata= getdatafromserver(); 
      return strdata; 
     }  

     @Override 
     protected void onPreExecute(String result) { 

     objwebview.loadData(result.toString(), "text/html", "UTF-8"); 
     // dismiss progress bar here 
     progressDialog.dismiss(); 
     } 
public String getdatafromserver(){ 
    String line; 
     objwebview.loadData(str.toString(), "text/html", "UTF-8"); 
     HttpClient client = new DefaultHttpClient(); 
     HttpGet request = new HttpGet("http://www.google.com"); 
     try 
     { 
      HttpResponse response = client.execute(request); 
      BufferedReader reader = new BufferedReader(new 
        InputStreamReader(response.getEntity().getContent())); 

      StringBuilder str = new StringBuilder(); 
      while((line = reader.readLine()) != null) { 
       str.append(line); 
     } 

    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
     line=e.toString(); 

    } 
return line; 
} 
} 

,你也可以使用onProgressUpdatepublishProgress用於顯示加載使用AsyncTask並將結果發佈到Ui線程。更多信息請參見

http://developer.android.com/reference/android/os/AsyncTask.html

+0

看來onPreExecute()和onPostExecute ()混淆了(即,progressDialog應該在onExExecute()中設置並在onPostExecute()中解除) – crnv

相關問題