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 スレッドで 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 に答える
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 に答える