有时候希望给对话框中的内容做验证,希望在验证错误时不能让对话框消失,但是在android dialog中,只要点击确认和返回就会自动关闭对话框,十分头疼。。。。
经过查阅网络资料,看到http://shufeipenglove-163-com.iteye.com/blog/1274977的这位大牛给出了用反射控制的方法,于是自己修改后的代码如下,基本没改什么,只是为了以后查阅方便哈。
package com.example.android_dialog_test;
import java.lang.reflect.Field;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.view.Menu;
import android.widget.EditText;
public class MainActivity extends Activity {
EditText input;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
input = new EditText(this);
Builder builder = new Builder(this);
builder.setPositiveButton("check",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 不关闭
setClosable(dialog, false);
if ((input.getText().toString()).equals("123")) {
// 关闭对话框
setClosable(dialog, true);
dialog.dismiss();
}else{
input.setText("输入错误!");
}
}
}).setView(input)
.setNegativeButton("cancel", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
setClosable(dialog, true);
dialog.dismiss();
}
}).create().show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
private void setClosable(DialogInterface dialog, boolean b) {
try {
Field field = dialog.getClass().getSuperclass()
.getDeclaredField("mShowing");
field.setAccessible(true);
field.set(dialog, b);
} catch (Exception e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
android写的一个打开文本对话框,希望对大家有帮助
借鉴网络上的例子,将文件夹列表做成组件加载到Activity,可以移植到工程中使用(自己已经这样做了)。
这是一个Android自定义加载对话框,实现显示和取消对话框功能,简单的小功能希望对你有用.
仿IOS的Android弹出对话框,可以做工具类使用。
Dialog对话框之android 自定义对话框代码 设置对话框显示一个单选的List 用来设置对话框显示一系列的复选框 设置进度条风格,风格为圆形,旋转的
Android菜单、对话框使用实例源码,,基本使用
本代码是一个集成普通对话框、单选对话框、多选对话框一体的案例。
Android Dialog 即 Android对话框,在Android开发中,我们经常会需要在Android界面上弹出一些对话框,以询问用户或者让用户选择。Android Dialog 一般有五种,分别是:一般对话框,列表对话框,单选按钮对话框,多选...
android 具有选择功能的对话框dialog
这个示例演示对话框的用法,包括普通的AlertDialog,列表对话框,进度对话框,自定义对话框 这里实现一个在3秒后自动关闭对话框的功能,通过一个定时器来完成
Android 全选反选对话框
Android常用对话框源码--对话框大全,
Android ProgressDialog进度条对话框
Android漂亮的对话框项目sweet-alert-dialog github上为as项目,现转成eclipse,直接导入即可
FancyAlertDialog-Android,让你的原生android对话框更漂亮。一个库,它将标准的android对话框提升到一个新的级别,并提供多种样式选项。从代码中设置对话框的样式。.zip
通过一个简单的例子实现了Android系统对话框和自定义对话框,有需要的可以看看!
功能描述: SettingDialog mVersionDialog = new SettingDialog(this, R.style.IdealDialog); mVersionDialog.setSize(600,600); mVersionDialog.setLocation(150,200); mVersionDialog.setAlpha(0.8f);...
android的自定义对话框,你值得拥有
关于android中的对话框,虽然比较简单,但是鉴于种类太多,全部记下来有一定的难度,因此将各类的对话框整理一下,便于 查找,记忆和使用。 android中的对话框只要是在当前页面弹出一个窗口,用于提示用户重要的信息...
Android 半透明对话框Demo源码