我得到了这个进度对话框代码:
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(纵梁);
我如何在它们之间同步?我希望文本将被隐藏,直到进度完成
TNX!
答案 0 :(得分:1)
我认为你应该使用AsyncTask,你可以隐藏in OnPreExecute Method
我的意思是当asynctask开始并在完成进度后显示在OnPostExecute method.
中。
答案 1 :(得分: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
}
}
答案 2 :(得分: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);
}
};