我是Android开发人员的新手,我正在努力解决这个让我感到沮丧的问题。我试图关闭这个progressDialog。当我运行应用程序时,它会显示,提取信息,并更新UI。但是,对话框永远不会被驳回。
progDialog = ProgressDialog.show(HomeActivity.this, "", "Fetching info...", true, false);
new Thread(new Runnable() {
public void run() {
fetchInfomation(userID); //fetches information - Works
runOnUiThread(new Runnable() {
public void run() {
setLayoutList(); //updates UI - Works
progDialog.dismiss(); //doesn't seem to close progress dialog
firstView(); //displays prompt - Works
}
});
progDialog.dismiss(); //doesn't close dialog either
}
}).start();
有什么想法吗?
答案 0 :(得分:0)
您无法与外部线程内的UI进行交互。有一些技术可以做到这一点,但没有必要。
您可以使用Handler
。
例如:
...
private Handler mHandler;
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
mHandler = new Handler() {
@Override
public void handleMessage (Message msg) {
switch (msg.what) {
case 0: ...
case 1: ...
}
}
}
}
和
....
new Thread() {
@Override
public void run() {
... // do your background jobs here
mHandler.sendEmptyMessage(...); // interact with UI
});
}
}.start();
答案 1 :(得分:0)
如果您在UI线程上执行任何GUI更新,那将是一种很好的做法。在任何线程中,您可以运行UI线程,您可以在其中执行UI内容,否则您也可以使用消息处理程序,它也会为您执行相同操作。
Runnable run_in_ui = new Runnable() {
@Override
public void run() {
// do your UI stuffs here
}
};
runOnUiThread(run_in_ui);