码牛Android移动高级开发4期学习笔记

android 应用


要做一个系统BUTTON风格的修改密码对话框,分别有三个文本输入框:原密码,新密码,确认新密码,原密码和之前不一致时点系统确定按钮直接给用户错误提示,而不关对话框,但Android2.3和4.0上系统默认点击按钮就会关掉对话框,诞生以下方法:

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不可关。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容