-------轉(zhuǎn)載自網(wǎng)絡(luò)-------
我們?cè)谑褂肁lertDialog時(shí)趣席,無論點(diǎn)擊“確定”(PositiveButton)還是“取消”(NegativeButton)违帆,對(duì)話框都會(huì)消失,這其實(shí)是不合理的。如果遇到這種情況:AlertDialog里面有一個(gè)文本框栗精,要求用戶必須輸入內(nèi)容益老,但如果用戶沒有輸入就點(diǎn)擊了確定彪蓬,這時(shí)對(duì)話框是不應(yīng)該消失的,而是應(yīng)該保留該對(duì)話框并提示用戶必須輸入文字捺萌。
解決辦法:
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時(shí)setPositiveButton方法的OnClickListener參數(shù)需傳入null桃纯,然后讓dialog show出來以后酷誓,再通過getButton(AlertDialog.BUTTON_POSITIVE)方法重新得到確定按鈕,重設(shè)點(diǎn)擊事件态坦,這時(shí)如果不手動(dòng)去調(diào)dialog.dismiss()盐数,對(duì)話框就不會(huì)消失了。