-------轉(zhuǎn)載自網(wǎng)絡(luò)-------
我們在使用AlertDialog時,無論點擊“確定”(PositiveButton)還是“取消”(NegativeButton),對話框都會消失,這其實是不合理的。如果遇到這種情況:AlertDialog里面有一個文本框,要求用戶必須輸入內(nèi)容,但如果用戶沒有輸入就點擊了確定,這時對話框是不應(yīng)該消失的,而是應(yīng)該保留該對話框并提示用戶必須輸入文字。
解決辦法:
final AlertDialog dialog = new AlertDialog.Builder(mContext).setView(view).setPositiveButton("確定", null)
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).create();
//這里必須要先調(diào)show()方法,后面的getButton才有效
dialog.show();
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (TextUtils.isEmpty(et.getText())) {
showToast("文字不能為空");
return;
}
dialog.dismiss();
}
});
也就是說,在創(chuàng)建AlertDialog時setPositiveButton方法的OnClickListener參數(shù)需傳入null,然后讓dialog show出來以后,再通過getButton(AlertDialog.BUTTON_POSITIVE)方法重新得到確定按鈕,重設(shè)點擊事件,這時如果不手動去調(diào)dialog.dismiss(),對話框就不會消失了。