嗨大家看看下面的代码...我在我的应用程序中使用进度条,但是当我使用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();
答案 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。