AlertDialog通过反射机制阻止Dialog关闭
来源:互联网 发布:linux alias命令用法 编辑:程序博客网 时间:2024/05/17 15:35
在开发Android应用程序时,我们可能会用到需要用户输入的Dialog,如登录对话框等。这时候,如果用户没有输入登录信息而点击<确定>按钮时,我们并不希望登录Dialog消失,而是采用一个Toast提示用户没有输入登录信息。在这里,我就向大家介绍下Dialog通过反射机制阻止Dialog关闭。
在我们创建Dialog时,在Dialog的按钮点击事件处理中做如下处理
- <pre name="code" class="java"><pre name="code" class="java">LayoutInflater inflater = LayoutInflater.from(this);
- final View textEntryView = inflater.inflate(
- R.layout.f_alert_dialog_takeeffect, null);
- AlertDialog.Builder builder = new AlertDialog.Builder(context);
- builder.setIcon(android.R.drawable.ic_dialog_alert);
- builder.setView(textEntryView);
- builder.setTitle(profileSettingList[settingId]);
- //确定按钮点击事件处理
- builder.setPositiveButton(R.string.btn_OK,
- new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int whichButton) {
- Field field = null;
- try {
- //通过反射获取dialog中的私有属性mShowing
- field = dialog.getClass().getSuperclass()
- .getDeclaredField("mShowing");
- field.setAccessible(true);//设置该属性可以访问
- } catch (Exception e) {
- }
- EditText message_edit = (EditText) textEntryView
- .findViewById(R.id.usermessage_edit);
- String message = String.valueOf(message_edit.getText());
- if (null == message || "".equals(message)) {
- try {
- //输入框中内容为空,dialog不关闭
- field.set(dialog, false);
- dialog.dismiss();
- } catch (Exception e) {
- }
- //提示用户输入登录信息
- Toast.makeText(getApplicationContext(),
- R.string.pleaseenter_message,
- Toast.LENGTH_LONG).show();
- } else {
- try {
- //可以关闭
- field.set(dialog, true);
- dialog.dismiss();
- } catch (Exception e) {
- }
- //登录业务处理</pre><br>
0 0
- AlertDialog通过反射机制阻止Dialog关闭
- AlertDialog通过反射机制阻止Dialog关闭
- AlertDialog通过反射机制阻止Dialog关闭
- AlertDialog通过反射机制阻止Dialog关闭
- 阻止alertDialog自动关闭
- 利用Java反射技术阻止通过按钮关闭对话框
- 关于Android中利用java反射阻止dialog的关闭问题
- 阻止对话框的正常关闭(AlertDialog)
- Android中利用反射机制来控制AlertDialog窗口不被关闭
- 安卓_利用Java反射技术阻止通过按钮关闭对话框
- Android之Java反射使用:阻止AlertDialog的dismiss事件
- Android系统原理与源码分析(1):利用Java反射技术阻止通过按钮关闭对话框
- Android系统原理与源码分析(1):利用Java反射技术阻止通过按钮关闭对话
- Android系统原理与源码分析(1):利用Java反射技术阻止通过按钮关闭对话框
- Android系统原理与源码分析(1):利用Java反射技术阻止通过按钮关闭对话框
- Android系统原理与源码分析(1):利用Java反射技术阻止通过按钮关闭对话框
- Android系统原理与源码分析(1):利用Java反射技术阻止通过按钮关闭对话框
- Android系统原理与源码分析(1):利用Java反射技术阻止通过按钮关闭对话框
- ArcGIS 10.3 属性表乱码问题
- :target 伪类使用技巧
- C++ 设计模式之中介者模式
- 静态加载界面文件和动态加载
- 献给写作者的 Markdown 新手指南
- AlertDialog通过反射机制阻止Dialog关闭
- Log4j的使用及原理
- POJ 3264 Balanced Lineup
- 日本語:日常会话4-レストランについて
- SSM整合tomcat服务器启动不了,控制台log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more
- Swift 3实现简单条形码功能
- 火狐 SSL 收到了一个弱临时 Diffie-Hellman 密钥
- 实现智能读报(逐字朗读+自动滚屏)
- UIViewController-iOS-Apple官方文档翻译注释总结