您的位置:首页 > 移动开发 > Android开发

Android中利用反射机制来控制AlertDialog窗口不被关闭

2015-06-17 11:36 393 查看
在项目中我们经常会遇到需要在AlertDialog做一些业务选项,此时如果我们要控制选项没有被选中,就不让AlertDialog关闭,并提示用户。在Android中,因为系统封装了AlertDialog的修改,没有对外提供修改接口,所以我们不能直接控制关闭。此时我们可以利用反射机制,获取dialog中控制关闭的变量,修改该值即可完美控制AlertDialog显示和关闭了。

在AlertDialog的单击事件

new DialogInterface.OnClickListener(){}

中,我们只需要加入如下代码,就成功了!

try

{

Field field = dialog.getClass()

.getSuperclass().getDeclaredField(

"mShowing" );

field.setAccessible( true );

// 将mShowing变量设为false,表示对话框已关闭

field.set(dialog, false );

dialog.dismiss();

}

catch (Exception e)

{

}

,如果在OK按钮中加入了此代码,那么点击Cancle也不能关闭了,此时可以把上段代码放到Cancle的单击事件中,主需要将field.set(dialog, false );中的false更新为true,就完美的解决了此问题!


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: