1

リモートサーバーからいくつかのデータをロードしている間、進行状況ダイアログを表示したい:

データを取得するために次のスレッドを使用していますが、動作していますが、アクティビティに進行状況バーを表示できません:

public class Request {

    public String text ;
    public boolean downloadText(String urlStr) {
        final String url = urlStr;
        new Thread () {
            public void run() {
                int BUFFER_SIZE = 2000;
                InputStream in = null;
                Message msg = Message.obtain();
                msg.what=2;
                try {
                    in = openHttpConnection(url);

                    InputStreamReader isr = new InputStreamReader(in);
                    int charRead;
                      text = "";
                      char[] inputBuffer = new char[BUFFER_SIZE];

                          while ((charRead = isr.read(inputBuffer))>0)
                          {                    
                              //---convert the chars to a String---
                              String readString = 
                                  String.copyValueOf(inputBuffer, 0, charRead);                    
                              text += readString;
                              inputBuffer = new char[BUFFER_SIZE];
                          }
                         Bundle b = new Bundle();
                            b.putString("text", text);
                            msg.setData(b);
                          in.close();

                }catch (IOException e) {
                    e.printStackTrace();
                }


            }
        }.start();

    }

どうすればできるのか教えてください!!

4

5 に答える 5

2

使用するprogressDialog

final ProgressDialog progress=ProgressDialog.show(youractivity.this,"","message");
 new Thread()
  {
   public void run()
   {
     try{
      youractivity.this.runOnUiThread(new Runnable(){
      @Override
      public void run() {
       // TODO Auto-generated method stub
               // your code
      }
      });
     }
     catch(Exception e)
     {
     }
     progress.dismiss();
   }
}.start()

また、使用する場合Toastは、使用する必要があることに注意してくださいrunOnUiThread

于 2013-04-29T10:05:40.777 に答える
1

コードの構造を変更したくない場合は、runOnUiThreadまたは Handler を使用して進行状況ダイアログを表示および非表示にすることができます。runメソッドの最初の行が実行されたときにそれを表示し、finallyブロックで閉じます。

 public void run() {

    runOnUiThread(new Runnable() {

      public void run(){
         // show progress dialog
      }  

      });  

  /// your code here
  try {




  } catch (IOException e) {
  } finally {
          runOnUiThread(new Runnable() {

      public void run(){
         // dismiss progress dialog
      }  

      });  
  } 


 }
于 2013-04-29T10:07:43.270 に答える
0

AsyncTask で進行状況ダイアログを作成する

private class YourAsyncTask extends AsyncTask<Void, Void, Void> {
     protected Void doInBackground(Void... args) {
        // do background work here
        return null;
     }

     protected void onPostExecute(Void result) {
         // do UI work here
     }
 }
于 2013-04-29T10:05:02.550 に答える