如何讓AlertDialog 在點選確定或者取消時不消失
阿新 • • 發佈:2019-01-22
有時候我們會在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不消失。