如何让AlertDialog 在点击确定不消失
2020-05-13 本文已影响0人
念念不忘_2016
有时候我们会在AlertDialog 里面进行一些逻辑判断,当单击“确定“按钮时完成某些工作,如果这些工作失败,对话框不能关闭。而当成功完成工作后,则关闭对话框。但是系统默认是每次点击确定按钮或者取消按钮,dialog都会消失。原因分析的话这篇文章分析的非常好,我就不再累赘:http://blog.csdn.net/jdsjlzx/article/details/25288749,它里面也提供了些解决办法,比如利用反射或者自定义handler,但是感觉有点烦,于是我在stackoverflow上找到了一个更好的方法:
final AlertDialog mDialog=new AlertDialog.Builder(this).setPositiveButton("确定", null).setNegativeButton("取消", null).create();
mDialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
Button positionButton=mDialog.getButton(AlertDialog.BUTTON_POSITIVE);
Button negativeButton=mDialog.getButton(AlertDialog.BUTTON_NEGATIVE);
positionButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,"确定",Toast.LENGTH_SHORT).show();
mDialog.dismiss();
}
});
negativeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,"取消",Toast.LENGTH_SHORT).show();
}
});
}
});
mDialog.show();
嗯,这样子就可以自己控制dialog的显示和消失了,so easy。以上代码实现的是点击确定,dialog消失,点击取消,dialog不消失。
转自https://blog.csdn.net/wanglaohushiwo/article/details/54316616