【发布时间】:2012-04-12 16:18:46
【问题描述】:
我正在开发 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() 中检查它。如果 display 有值,则显示一个对话框。
你怎么看?有没有更好的办法?
【问题讨论】:
-
您无法从普通线程更新 UI 或显示 AlertDialog。您必须使用 UI 线程来执行此操作
标签: android multithreading dialog ui-thread