android 應用
要做一個系統(tǒng)BUTTON風格的修改密碼對話框池户,分別有三個文本輸入框:原密碼,新密碼超营,確認新密碼眠砾,原密碼和之前不一致時點系統(tǒng)確定按鈕直接給用戶錯誤提示虏劲,而不關對話框托酸,但Android2.3和4.0上系統(tǒng)默認點擊按鈕就會關掉對話框,誕生以下方法:
private void cleanupDialog(Dialog dialog, boolean cleanup) {
try {
if (null != dialog) {
// set the dialog can not be dismiss
Field field = dialog.getClass().getSuperclass()
.getDeclaredField("mShowing");
field.setAccessible(true);
field.set(dialog, cleanup);
if (cleanup) {
dialog.dismiss();
dialog = null;
}
}
} catch (Exception e) {
Log.e(TAG, "Exception: " + e);
}
}
原理:通過JAVA反射調用ANDROID里Dialog.class的父類的一個屬性mShowing柒巫,?field.setAccessible(true)關掉mShowing屬性檢查励堡,field.set(dialog, cleanup)設置屬性的值,cleanup=true 可關閉對話框并關閉堡掏,為false不可關应结。