0

我是 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();  

有任何想法吗?

4

2 回答 2

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();
于 2012-07-23T03:54:36.017 回答
0

如果您在 UI 线程上进行任何 GUI 更新,这将是一个很好的做法。在任何线程中,您都可以运行您的 UI 线程,您可以在其中执行 UI 工作,或者您也可以使用消息处理程序,它也会为您做同样的事情。

Runnable run_in_ui = new Runnable() {
    @Override
    public void run() {
        // do your UI stuffs here
    }
};
runOnUiThread(run_in_ui);
于 2012-07-23T03:59:32.140 回答