0

私はこの進行状況ダイアログコードを取得しました:

new Thread() {
    @Override
    public void run() {
        try {
            sleep(1000);
        } 
        catch (Exception e) {
            Log.e("tag", e.getMessage());
        }
        // dismiss the progress dialog
        progressDialog.dismiss();
    }
}.start();

そして、いくつかのhttprequestアクションの後に表示されるテキストを取得しました。

editText2.setText(stringEr);

それらを同期するにはどうすればよいですか?進行が終了するまでテキストを非表示にしたい

tnx!

4

3 に答える 3

1

そのためにはAsyncTaskを使用する必要があると思いますin OnPreExecute Method.asynctaskが開始されたときに非表示OnPostExecute method.にして、進行が完了した後に表示することができます.

于 2012-06-06T10:46:14.770 に答える
1

Android は面倒な Threading の概念をスキップし、Asyntaskクラスを使用します。 http://developer.android.com/reference/android/os/AsyncTask.html

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

      @Override
      protected void onPreExecute() {
         //show dialog
      }

      @Override
      protected String doInBackground(String... params) {
            //collect data
            return null;
      }      

      @Override
      protected void onPostExecute(String result) {
           //dismiss dialog
           //update UI
      }

  }
于 2012-06-06T10:46:48.207 に答える
1

UI を更新するには、ハンドラーを使用する必要があります。ここで少し修正すると、

new Thread() 
            {
                @Override
                public void run()
                    {
                        try
                        {
                           //Instead of sleep, call your http request method here. 
                           handler.sendEmptyMessage(0);
                         } 

                         catch (Exception e)
                          {

                          Log.e("tag", e.getMessage());

                          }
                           // dismiss the progress dialog
                           progressDialog.dismiss();
                    }

              }.start();

そして onCreate() でハンドラを作成し、

 Handler handler=new Handler()
{
public void handleMEssage(Message msg)
{
 if(msg.what==0)
editText2.setText(stringEr);
}
};
于 2012-06-06T10:47:48.537 に答える