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);

我如何在它们之间同步?我希望在进度完成之前隐藏文本

天呐!

4

3 回答 3

1

我认为您应该为此使用AsyncTask,并且您可以隐藏in OnPreExecute Method我的意思是何时启动 asynctask 并在OnPostExecute method.完成进度后显示。

于 2012-06-06T10:46:14.770 回答
1

Android 跳过了痛苦的线程概念,使用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 回答