Android(安卓)Alert Dialog解决点击按钮对话框不关闭的问题
16lz
2022-05-01
推荐安卓开发神器(里面有各种UI特效和android代码库实例)
当我们在用到Android alertDialog创建对话框 的时候,我们会遇到一个问题就是:我们添加的按钮不论是用setNegativeButton还是用setPositiveButton添加的按钮,点击的时候,都会关闭对话框,但是我们的一 些实际需求,就需要保留这个对话框不动,例如输入校验码,密码之类的校验问题,如果用户输入错误,而关闭后弹出对话框,就很别扭了。在网上找了一下,原来在源码中有一个boolean变量是控件对话框的关闭与否的mShowing变量,我们只需要利用反射改变这个变量就可以控制我们的对话框是不是关闭了。所以,我们可以通过手动设置mShowing的值来达到目的。代码如下:
如果点击保持对话框:
view plain- privatevoidkeepDialog(DialogInterfacedialog){
- try{
- Fieldfield=dialog.getClass().getSuperclass().getDeclaredField("mShowing");
- field.setAccessible(true);
- field.set(dialog,false);
- }catch(Exceptione){
- e.printStackTrace();
- }
- }
相信上面有一定java基础的都能看懂是写的什么,反射这里不多解释,很简单。
mShowing是Dialog类的一个成员变量,在上面的方法中改变之后会影响别的按钮,如现在点击“取消”按钮将不能关闭对话框,解决办法在“取消”的onClick事件中再改变mShowing的值,如下:
如果点击关闭对话框:
view plain- privatevoiddistoryDialog(DialogInterfacedialog){
- try{
- Fieldfield=dialog.getClass().getSuperclass().getDeclaredField("mShowing");
- field.setAccessible(true);
- field.set(dialog,true);
- }catch(Exceptione){
- e.printStackTrace();
- }
- }
更多相关文章
- Android(安卓)C/C++开发指南
- 解决AndroidStudio连不上Android设备真机的问题
- Android(安卓)Activity类应用技巧分享
- Android界面编程——对话框控件(四)
- 怎么样搭建Android开发平台
- android下httpd 代理设置和webview代理设置
- Android——四种AterDialog
- Android中关于自定义Dialog的使用简介
- Android(安卓)webview 应用