进度条没有显示

时间:2012-04-25 19:05:46

标签: android

嗨大家看看下面的代码...我在我的应用程序中使用进度条,但是当我使用dialog.dismiss()时它没有显示但显示我是否不使用此方法但问题是它确实不要走开...... 任何帮助人......?

 AlertDialog.Builder builder = new AlertDialog.Builder(this);
                builder.setMessage("Are you sure you want to delete?")
                        .setCancelable(false)
                        .setPositiveButton("Yes",
                                new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog,
                                            int id) {
                                        `ProgressDialog` dialog1 = ProgressDialog.show(context, "", "Deleting...",true);
                                        // Log.v("", "You Clicked " + s);

                                        dba.delete("messages", "private = 0 and _id=?",
                                                new String[] { s });
                                        dba.close();
                                        populate();

                                    }
                                })
                        .setNegativeButton("No",
                                new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog,
                                            int id) {
                                        dialog.cancel();
                                    }
                                });

                AlertDialog alert = builder.create();
                alert.show();
                dialog1.dismiss();

1 个答案:

答案 0 :(得分:1)

我会清理几件事:

DialogInterface.OnClickListener clickListener = new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int id) {
        switch(id){
        case DialogInterface.BUTTON_POSITIVE:

            ProgressDialog waitDialog = ProgressDialog.show(context, "", "Deleting...",true);
            dba.delete("messages", "private = 0 and _id=?", new String[] { s }) > 0);
            dba.close();

            waitDialog.dismiss();

            populate();

            break;
        case DialogInterface.BUTTON_NEGATIVE:
            dialog.dismiss();
            break;
        }
}

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Are you sure you want to delete?")
       .setCancelable(false)
       .setPositiveButton("Yes", clickListener)
       .setNegativeButton("No", clickListener);

AlertDialog alert = builder.create();
alert.show();

让我感到困惑的是,为什么你会打电话alert.show()并立即拨打dialog.dismiss(),直到你点击对话框中的POSITIVE按钮后才会显示dialog。< / p>

现在,我不记得SQLite调用是否阻塞,执行删除操作,然后关闭对话框,应该按照正确的顺序完成。我还没喝咖啡;)

但请记住,SQLite调用通常不需要太长时间,因此从数据库中删除一行时,ProgressDialog将闪烁并闪烁,如果是这样的话。如果操作耗时超过300毫秒,您可能希望实现一个Timer来显示进度。

此外,通过创建新的OnClickListener而不是使用匿名内部类,事情可以清理并变得更加可重用。

这一行:     dialog.cancel(); 很有趣,并且您已将对话框设置为可取消。 dismiss()cancel()之间的区别在于cancel()调用会触发您未设置的OnCancelListener