我正在开发Android 3.1及更高版本的应用程序。
我添加了一个线程来使用Spring Framework发出REST请求。这是我的代码:
public class FormsListActivity extends ListActivity
{
private List<Form> forms;
private ProgressDialog progressDialog;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
progressDialog = ProgressDialog.show(this, "Please Wait.", "Loading forms...");
getUpdates.start();
}
private Thread getUpdates = new Thread ()
{
public void run()
{
try
{
forms = FormSpringController.LoadAll();
progressDialog.dismiss();
}
catch (Exception e)
{
e.printStackTrace();
//display = e.getLocalizedMessage();
}
runOnUiThread(new Runnable()
{
public void run()
{
setListAdapter(new FormAdapter(FormsListActivity.this, R.layout.form_list_item, forms));
ListView lv = getListView();
lv.setTextFilterEnabled(true);
}
});
}
};
}
我想在catch块中显示一个对话框:
catch (Exception e)
{
e.printStackTrace();
//display = e.getLocalizedMessage();
}
我认为设置display
变量时会出现错误,然后在runOnUiThread(new Runnable()
内查看。如果显示有值,则显示对话框。
答案 0 :(得分:2)
看看这个。将线程的run方法的所有代码放在handleMessage(Message message)
方法
private Handler handler = new Handler(){
public void handleMessage(Message message){
try
{
forms = FormSpringController.LoadAll();
progressDialog.dismiss();
setListAdapter(new FormAdapter(FormsListActivity.this, R.layout.form_list_item, forms));
ListView lv = getListView();
lv.setTextFilterEnabled(true);
}
catch (Exception e)
{
e.printStackTrace();
//display = e.getLocalizedMessage();
}
}
}
并在Thread的run方法中调用它
handler .sendEmptyMessage(0);
答案 1 :(得分:0)
runOnUiThread(new Runnable(){
public void run(){
////code for alert dialog
}
});
不推荐,但您可以使用它。最好使用另一个处理所有UI任务的线程。