[Android] 设置AlertDialog打开后不消失
最近项目收尾,一堆bug要改,还要对用户操作体验做一些优化,也是忙的不行。周末难得清闲,出去逛逛,看看风景,还好因为习大大要来,南京最近的天气还不错,只是苦了当地的不少农民工,无活可干,无钱可拿。想想觉得自己已经算是幸运的了,心存感激,好好工作。
原文地址请保留 http://www.cnblogs.com/rossoneri/p/4150001.html
整理一下以前查过的东西,可惜笔记本没记多少资料博客的网址,没法贴资料地址。
关于本文,是要满足一个需求:
打开一个自定义对话框之后,再点击按钮,希望弹出一个确认之类的对话框显示在前端,同时不希望原来的对话框消失。
方法就是用反射机制获取相关字段进行设置:
Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
field.setAccessible(true);
field.set(dialog, false);
关于getDeclaredField()往后再研究下。
写了个简单的demo:
public class MainActivity extends ActionBarActivity {
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
AlertDialog.Builder builder = new Builder(MainActivity.this,
AlertDialog.THEME_HOLO_LIGHT);
builder.setTitle("Test");
builder.setMessage("Try to push the OK button and the dialog won`t be dismissed, do it now !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
builder.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
// TODO Auto-generated method stub
try {
Field field = dialog.getClass()
.getSuperclass()
.getDeclaredField("mShowing");
field.setAccessible(true);
field.set(dialog, false); // 此处设为true则可以关闭
} catch (Exception e) {
e.printStackTrace();
}
AlertDialog.Builder confirmDlg = new Builder(
MainActivity.this,
AlertDialog.THEME_HOLO_DARK);
confirmDlg.setTitle("confirm");
confirmDlg
.setMessage("Do you want to do the action?");
confirmDlg.create().show();
}
});
builder.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
// TODO Auto-generated method stub
try {
Field field = dialog.getClass()
.getSuperclass()
.getDeclaredField("mShowing");
field.setAccessible(true);
field.set(dialog, true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
builder.create().show();
}
});
}
}
[Android] 设置AlertDialog打开后不消失的更多相关文章
- Android设置AlertDialog点击按钮对话框不关闭(转)
(转自:http://blog.csdn.net/winson_jason/article/details/8485524) 当我们在用到Android alertDialog创建对话框 的时候,我们 ...
- Android在 Alertdialog对话框中点击消失?
在开发的时候遇到一个问题.就是一触摸对话框边缘外部,对话框会自己主动消失.这个问题非常纠结啊,查找了一下发现从Android 4.0開始.AlertDialog有了变化.就是在触摸对话框边缘外部.对话 ...
- [Android] 设置AlertDialog中按钮的可用(Enable)状态
弹出一个保存文件的对话框,要控制输入内容限制,同时内容为空时保存按钮不可用. 原文地址请保留http://www.cnblogs.com/rossoneri/p/4140184.html 直接上代码: ...
- Android 设置AlertDialog的大小 .
AlertDialog dialog = builder.setTitle("消息列表") .setView(layout) .create(); dialog.show(); / ...
- Android设置屏幕旋转后保存数据
1.onCreate()方法中最后判断需要保存的状态值 if(savedInstanceState != null){ mCurrentIndex = savedInstanceState.getIn ...
- js弹框3秒后自动消失
开发中有时候会需要最出弹框后,过几秒自动消失的效果,下面给大家分享一下我自己做的一个小案例. 案例中的弹框使用的是bootstrap里面的模态框,实现自动消失则用的是js中的setInterval方法 ...
- 黄聪:C#设置窗体打开位置(在显示器的右下角打开)
; ; this.SetDesktopLocation(x, y); 注释:System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Size.Wid ...
- 安卓工作室 android studio 汉化后,报错。 设置界面打不开。Can't find resource for bundle java.util.PropertyResourceBundle, key emmet.bem.class.name.element.separator.label
安卓工作室 android studio 汉化后,报错. 设置界面打不开. Android studio has been sinified and reported wrong.The setup ...
- winform窗口打开后文本框的默认焦点设置
原文:http://blog.csdn.net/kongwei521/article/details/6871411 winform窗口打开后文本框的默认焦点设置,进入窗口后默认聚焦到某个文本框,两种 ...
随机推荐
- (转载)es进行聚合操作时提示Fielddata is disabled on text fields by default
原文地址:http://blog.csdn.net/u011403655/article/details/71107415 根据es官网的文档执行 GET /megacorp/employee/_se ...
- vector源码2(参考STL源码--侯捷):空间分配、push_back
vector源码1(参考STL源码--侯捷) vector源码2(参考STL源码--侯捷) vector源码(参考STL源码--侯捷)-----空间分配导致迭代器失效 vector源码3(参考STL源 ...
- Collection articles on stackoverflow
What does “WHERE 1” mean in SQL? http://stackoverflow.com/questions/3720735/what-does-where-1-mean-i ...
- 【JAVA SPRING】IOC与AOP
IOC(注入)有三种类型: 构造函数注入: 属性注入: 接口注入: JAVA反射: JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法: 对于任意一个对象,都能够调用它的 ...
- java实现跳跃表
先贴上一个MIT跳跃表公开课链接:http://open.163.com/movie/2010/12/7/S/M6UTT5U0I_M6V2TTJ7S.html redis中的有序链表结构就是在跳跃表的 ...
- MYSQLI_USE_RESULT or MYSQLI_STORE_RESULT
之前都是使用同事封装好的mysql类,今天做性能测试时自己手动编写了查询mysql的操作.偶然发现mysqli::query(或者mysqli_query)有一个参数$resultmode取值为MYS ...
- Java NIO系列教程(十二) Java NIO与IO
当学习了Java NIO和IO的API后,一个问题马上涌入脑海: 我应该何时使用IO,何时使用NIO呢?在本文中,我会尽量清晰地解析Java NIO和IO的差异.它们的使用场景,以及它们如何影响您的代 ...
- 第一次项目上Linux服务器(七:——Tomcat+ngnix+域名的简单配置)
1.准备工作 安装好jdk+tomcat+nginx相关配置,请参考历史博客 2.修改Nginx配置文件 修改配置文件如下: 3.修改Tomcat配置文件 修改配置文件如下: 配置文件连接: ngni ...
- TensorFlow-实战Google深度学习框架 笔记(上)
TensorFlow TensorFlow 是一种采用数据流图(data flow graphs),用于数值计算的开源软件库.在 Tensorflow 中,所有不同的变量和运算都是储存在计算图,所以在 ...
- MFC RichText 滚动条问题
一共涉及两个问题: 1.如何更加轻快的在RichText不覆盖之前的文本而添加新的文本 CString text("add text\n"); //想插入的文本,为了使下次输入我们 ...