`

android端点击Dialog的按钮Dialog消失或不消失

 
阅读更多
重要代码:
Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
field.setAccessible(true);
field.set(dialog, false);// false表示不关闭
field.set(dialog, true);// true表示关闭
使用代码:
btnUpPwd.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
LayoutInflater inflater = LayoutInflater
.from(PersonalCenterActiviity.this);
final View view = inflater.inflate(R.layout.password_dialog,
null);
AlertDialog dialog = new AlertDialog.Builder(
PersonalCenterActiviity.this)
.setTitle("密码修改")
.setIcon(R.drawable.uppwd)
.setView(view)
.setPositiveButton("确定",
new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog,
int which) {
try {
field = dialog
.getClass()
.getSuperclass()
.getDeclaredField(
"mShowing");
field.setAccessible(true);
EditText currentPwd = (EditText) view
.findViewById(R.id.currentPwd);
EditText Pwd = (EditText) view
.findViewById(R.id.pwd);
EditText configPwd = (EditText) view
.findViewById(R.id.configPwd);
if (currentPwd.getText().toString()
.trim().equals("")
|| Pwd.getText().toString()
.trim().equals("")
|| configPwd.getText()
.toString().trim()
.equals("")) {
field.set(dialog, false);// true表示不关闭
Toast.makeText(
PersonalCenterActiviity.this,
"必填项不能为空",
Toast.LENGTH_SHORT)
.show();
} else if (!(currentPwd.getText()
.toString().trim()
.equals(password))) {
field.set(dialog, false);// true表示不关闭
Toast.makeText(
PersonalCenterActiviity.this,
"现有密码错误",
Toast.LENGTH_SHORT)
.show();
} else if (!(Pwd.getText()
.toString().trim()
.equals(configPwd.getText()
.toString().trim()))) {
field.set(dialog, false);// true表示不关闭
Toast.makeText(
PersonalCenterActiviity.this,
"密码与确认密码不同",
Toast.LENGTH_SHORT)
.show();
} else if (password.equals(Pwd
.getText().toString()
.trim())) {
field.set(dialog, false);// true表示不关闭
Toast.makeText(
PersonalCenterActiviity.this,
"新密码与现有密码相同",
Toast.LENGTH_SHORT)
.show();
} else {
listPwd = new ArrayList();
listPwd.add(userId);
listPwd.add(Pwd.getText()
.toString().trim());
myPwdHandler = new MyPwdHandler();
myPwdThread = new MyPwdThread();
myPwdThread.start();
}
} catch (Exception e) {
e.printStackTrace();
}

}
})
.setNegativeButton("取消",
new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog,
int which) {
//DoNothing
try {
if(field == null){
dialog.dismiss();
}else if(!(field == null)){
field.set(dialog, true);
}
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).create();
dialog.show();
}
});
分享到:
评论

相关推荐

    android中dialog点击按钮不消失详解

    在调用dialog的时候得到dialog对象,加入资料中代码,可以控制dialog的按钮在什么时候消失,而不是系统默认的点击消失

    Android 控制关闭Dialog

    然而,在某些特定场景下,我们可能希望在用户触发某个操作(如输入验证失败)时保持Dialog不关闭,以便用户可以修正错误。这就是描述中提到的问题——如何控制Dialog在点击按钮后不关闭。 要实现这一功能,我们可以...

    android 自定义右上角关闭按钮X的dialog

    在Android开发中,自定义对话框(Dialog)是一种常见的需求,它可以提供更加个性化的用户体验。本文将详细讲解如何实现一个自定义的右上角带有“X”文字按钮的Dialog,这个按钮可以用来关闭Dialog。 首先,我们需要...

    Android 底部弹出dialog+动画

    为了在点击外部或者按钮时关闭Dialog,我们需要重写`onDismiss()`方法: ```java @Override public void onDismiss(DialogInterface dialog) { super.onDismiss(dialog); // 可以在这里添加额外的逻辑,如更新UI...

    Android自定义显示内容的Dialog

    例如,当Dialog或PopupWindow显示和消失时,可以添加平滑的过渡动画,使得交互更加自然。 总结来说,Android自定义显示内容的Dialog可以通过继承Dialog或PopupWindow实现。Dialog提供了基本的对话框功能,而...

    Android Dialog全屏显示、动画显示

    例如,当用户点击相机按钮时,我们启动相机Intent: ```java Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(cameraIntent, CAMERA_REQUEST_CODE); ``` 在`...

    Android自定义Dialog多选对话框(Dialog+Listview+CheckBox)

    此外,我们还需要在Dialog的按钮(如“确定”、“取消”)上添加相应的点击事件处理。例如,当用户点击“确定”时,我们可以获取ListView中所有被选中的项,并执行相应的业务逻辑。 在实际项目中,文件名为`...

    Android-dialog库可以在任意类内调用子线程或ui线程内均可显示

    5. 监听用户操作:为Dialog的按钮或其他交互元素设置监听器,处理用户的点击事件。 在压缩包中的`AndroidDialogDemo-master`项目中,我们可以看到具体的示例代码,包括如何初始化Dialog,设置内容,以及如何在不同...

    android自定义圆角dialog

    4. **添加交互逻辑**:为Dialog上的按钮或其他元素设置点击事件监听器,实现用户交互功能。 5. **展示Dialog**:最后,在需要弹出Dialog的地方调用`show()`方法。 在本项目中的`selfDialog`文件可能是包含上述步骤...

    各种Android Dialog创建及其监听事件实现

    在Android开发中 我们经常会需要在Android界面上弹出一些对话框 比如询问用户或者让用户选择 关于Android Dialog的使用方法 已经有很多blog做出了详细的介绍(比如博客:7种形式的Android Dialog使用举例) 但是只是...

    安卓Dialog对话框相关-androiddialog总结Dialog整理.rar

    本资源“安卓Dialog对话框相关-androiddialog总结Dialog整理.rar”提供了关于Android Dialog的总结和示例,虽然不能确保所有代码都能直接运行,但它可以作为学习和参考的宝贵资料。 首先,我们来看Dialog的基本用法...

    Android仿IosDialog控件

    在Android中,我们可以为按钮设置点击监听器,当用户点击时改变其背景颜色。 6. **显示和关闭**:创建一个自定义的Dialog类,继承自`android.app.Dialog`,并在其中实现显示和关闭Dialog的逻辑。记得在适当的位置...

    Android开发:自定义界面的Dialog,并且实现按钮的监听回调

    很多这种类型的dialog,界面千变万化,于是我建立了一个通用自定义dialog,可以实现以下功能: 1、界面的自定义,全部自己用xml定义界面; 2、不管是在Fragment,还是Activity都...3、在dialog按钮点击后,自动消失。

    android在dialog中显示二维码

    本文将深入讲解如何在Android的Dialog中生成并显示二维码,以及如何处理点击Dialog外部以关闭Dialog的事件。 首先,我们需要了解二维码生成的基本原理。二维码(Quick Response Code)是一种二维条形码,能够存储比...

    AndroidDialog

    在Android开发中,Dialog是一种非常常见的用户交互组件,它用于在主界面之上显示临时的通知或进行简单的用户交互。本文将深入探讨如何在Android中自定义Dialog以及如何为Dialog添加进出动画,以提升用户体验。 首先...

    android自定义签名dialog

    在Android开发中,自定义对话框(Dialog)是一种常见的用户界面设计手法,它允许开发者创建具有特定功能或信息展示的半透明窗口,增强用户体验。本教程将深入探讨如何在Android应用中实现一个自定义签名Dialog。 ...

    自定义右上角带叉号Dialog Android 自定义layout Dialog

    这里,我们找到了关闭按钮的ImageView,并为其设置了一个点击监听器,当点击该按钮时,会调用`dismiss()`方法关闭Dialog。 总结来说,创建一个自定义右上角带叉号的Dialog,你需要: 1. 设计一个包含关闭按钮的...

    Android:自定义Dialog-Demo

    当系统默认的Dialog样式不能满足应用的特定需求时,开发者常常会选择自定义Dialog来实现更个性化的界面和交互体验。本示例"Android:自定义Dialog-Demo"就是针对这种情况提供的一种解决方案。 首先,我们来看自定义...

    Android dialog单选、多选弹窗

    在标题"Android dialog单选、多选弹窗"中,我们主要关注的是两种类型的Dialog:单选对话框(Radio Button Dialog)和多选对话框(Checkbox Dialog),以及可能涉及到的PopWindow窗口。 1. **单选对话框**: 单选...

    android自定义精美的dialog

    在Android开发中,自定义对话框(Dialog)是提升用户体验和增强应用个性化的重要手段。一个精美的自定义Dialog不仅能够提供必要的信息,还能通过各种显示动画效果吸引用户的注意力,增加应用的趣味性和专业性。本篇...

Global site tag (gtag.js) - Google Analytics