使用場景:
在AlertDialog彈出框上不論是用setNegativeButton還是用setPositiveButton添加的按鈕,在點(diǎn)擊的時候霎桅,都會默認(rèn)關(guān)閉對話框,但是我們的一 些實(shí)際需求,是需要讓AlertDialog不消失沽一,例如輸入校驗(yàn)碼,密碼之類的校驗(yàn)問題漓糙,如果用戶輸入錯誤铣缠,而關(guān)閉后彈出對話框,就麻煩了昆禽。
解決方法:
在AlertDialog按鈕的點(diǎn)擊事件中添加如下方法:
try {
Field field = dialog.getClass() .getSuperclass().getDeclaredField("mShowing" );
field.setAccessible( true );
// 將mShowing變量設(shè)為false蝗蛙,表示對話框已關(guān)閉
field.set(dialog, false );
dialog.dismiss();
} catch (Exception e) {
}
注意事項(xiàng):
將上面的代碼加到哪個按鈕的單擊事件代碼中,哪個按鈕就再也無法關(guān)閉對話框了醉鳖。如果要關(guān)閉對話框捡硅,只需再將 mShowing 設(shè)為 true 即可。要注意的是盗棵,在一個按鈕里設(shè)置了 mShowing 變量壮韭,也會影響另一個按鈕的關(guān)閉對話框功能,因此纹因,需要在每一個按鈕的單擊事件里都設(shè)置 mShowing 變量的值喷屋。
轉(zhuǎn)載自:http://blog.csdn.net/abby_dcy/article/details/6049535