2012-06-06 3 views
0

я получил этот диалог прогресса код:Как синхронизировать между ProgressDialog и текстом?

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!

ответ

1

Вы должны использовать обработчик для обновления пользовательского интерфейса. Немного модификация здесь,

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

Я думаю, вы должны использовать AsyncTask для этого, и вы можете скрыть in OnPreExecute Method. Я имею в виду, когда асинкстас запускается и отображается в OnPostExecute method. после завершения хода.

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 
     } 

    } 
+0

Могу ли я использовать EditText и материал в "AsyncTask"? потому что я получил ошибку «метод findViewById (int) не определен для типа UIOperation» BTW, я не могу установить его как закрытый, он говорит: «Недопустимый модификатор для класса UIOperation, разрешены только публичные, абстрактные и конечные» – user1284567

+0

обратитесь к http://pcfandroid.wordpress.com/2011/07/14/http-post-with-asynctask-android-tutorial/ –

Смежные вопросы