全局的dialog
来源:互联网 发布:积分商城java设计 编辑:程序博客网 时间:2024/06/07 15:09
以前一直觉得只有在activity中才可以弹dialog,最近项目需要一个不局限与某一个activity的dialog,通过查阅资料网上对于这种全局的dialog大致有三种方案
1、系统弹出dialog,样式不怎么漂亮但我觉得可以自定义的应该。
2、 设置setType()属性为WindowManager.LayoutParams,TYPE.SYSTEM/ALERT;觉得这个方法和第一种类似。
3、创建一个透明的activity ,让dialog依赖于这个activity,我个人不怎么喜欢这种方案。
最后我选择的第二种
我的dialog,要在收到推送时在Receiver里面处理弹还是不弹
1、 在清单文件中加权限
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
2、在dialog show()之前调用设置type的方法
AlertDialog alert = builder.create(); alert.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); alert.show();我定义了两个按钮,取消和确定,当点击确定的时候跳转到指定的activity确定按钮的点击事件后进行的跳转代码如下:.setNegativeButton("取消", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { Intent intent=new Intent(context,MainActivity.class);context.startActivity(intent);dilog.dismiss() } });
context上下文对象是Receiver中接收到的,这时候我运行程序,发现dialog如我所愿不受activity控制可以自由弹出了,但是当我点击确定按钮时,出现了错误Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?我发现是上下文对象需要一个名为FLAG_ACTIVITY_NEW_TASK 的flag,于是在启动activity前我添加了如下代码
intent.addFlags(FLAG_ACTIVITY_NEW_TASK);
这样就可以完美实现dialog无法无天的弹了O(∩_∩)O哈哈哈~~~~~~
对于这个知识点我只是总结了一下前辈们的方法和自己实际操作时遇到的问题,请大家多多指教哦!!
0 0
- 全局的dialog
- 全局Dialog的个人总结
- android 全局dialog的实现
- 全局dialog
- 全局dialog
- 全局Dialog动画--更改系统定义的Dialog动画
- 关于要使用全局dialog的解决方案
- Android 全局Dialog的实现方式
- 使android的dialog全局显示
- dialog全局显示的两种方式
- android 全局Dialog
- android全局Dialog
- android全局Dialog
- Android 弹出全局dialog
- Android 全局Activity or 全局Dialog
- android 全局无标题透明dialog
- Android Service 弹出系统全局Dialog
- 使用Dialog实现全局Loading加载框
- 简单的增删改查、时间函数
- free函数释放malloc分配的内存,这块内存情况
- 自己写Stack 实现栈结构
- Android studio svn 新建branch/tag 合并分支
- CUDA系列学习(三)GPU设计与结构QA & coding练习
- 全局的dialog
- 不用+-*/做加法
- 双向链表
- 读书笔记
- Quartz的原理
- Error during WebSocket handshake: Unexpected response code: 200错误
- Git速查
- windows进程PID的获取以及杀死
- eclipse必须知道的快捷键