Android - 进度对话框未关闭

时间:2011-02-18 11:08:12

标签: android progressdialog android-ui runnable

我有一个ListActivity类,当点击列表中的任何项目时,会显示一个新活动。新活动需要时间加载,所以我希望用户知道发生了某些事情(以进度对话框的形式)

所以,为了做到这一点,我在我的类中实现了Runnable -

public class ProtocolListActivity extends ListActivity implements Runnable {
private ProgressDialog progDialog;
....
protected void onListItemClick(ListView l, View v, int position, long id) {
                    progDialog.show(this, "Showing Data..", "please wait", true, false);

    Thread thread = new Thread(this);
    thread.start();
}
....
public void run() {
     // some code to start new activity based on which item the user has clicked.
}

最初,当我单击并且正在加载新活动时,进度对话框可以很好地工作,但是当我关闭上一个活动时(要返回到此列表),进度对话框仍在运行。我希望进度对话框仅在新活动开始时显示。

有人可以指导我如何正确地做到这一点。

1 个答案:

答案 0 :(得分:4)

程序员需要明确删除对话框(或由用户关闭)。所以,它应该以这种方式完成:

活动A中的

(呼叫活动)

protected void onListItemClick(ListView l, View v, int position, long id) {
    progDialog.show(this, "Showing Data..", "please wait", true, false);

    Thread thread = new Thread(this){
        // Do heavy weight work

        // Activity prepared to fire

        progDialog.dismiss();
    };
    thread.start();
}

虽然在大多数用例中,繁重的工作应该在被调用者Activity上。如果繁重的工作是在被调用者onCreate完成的,那应该是:

活动B(被叫者):

onCreate(){
    progDialog.show(this, "Showing Data..", "please wait", true, false);

    Thread thread = new Thread(this){
        // Do heavy weight work

        // UI ready

        progDialog.dismiss();
    };
    thread.start();
}

无论如何,这个想法仍然是一样的。