您的位置:首页 > 产品设计 > UI/UE

Android学习笔记——AlertDialogbuilder和AlertDialog

2016-05-16 13:46 435 查看
C++/Qt开始转行搞android了,比这郭霖大神的第一行代码写广播事件。学到在"广播中显示AlertDialog窗口"。本来以为很简单的事情,但是发现并不是这样。怪就怪在,是在“广播”中显示AlertDialog。废话不多少了,正题!

   AlertDialog是Dialog的一个直接子类,AlertDialog也是Android系统当中最常用的对话框之一。但是刚开始用的时候发现有两个AlertDialogbuilder和AlertDialog,而且还发现AlertDialog不能用直接构造。(于是拔了下源码,好在java开源)。

原来“AlertDialog所有的构造方法都是写保护的所以不能通过:AlertDialog
alertDialog  = new AlertDialog();来得到”, AlertDialog.builder是AlertDialog的静态内部类

//构建

AlertDialog.Builder
DialogBuilder  =new  AlertDialog.Builder(this);

DialogBuilder.setXXX()....

AlertDialog alertDialog = DialogBuilder.create();

alertDialog.show();

其实,后边两句可以直接写成

AlertDialog.Builder.show()
{
AlertDialog dialog = create();
dialog.show();
return dialog;
}

道理是一样的,这是AlertDialog.Builder.show()的实现

AlertDialog.Builder.show()
{
AlertDialog dialog = create();
dialog.show();
return dialog;
}

如果想在广播中显示AlertDialog,那必须写:

alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);

mainifest.xml添加权限
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

查了下资料,这两个的意思大概就是说“这是系统级别的警告窗”,级别很高的样子。不过实际验证了,确实,点home键,这个警告窗口都不消失
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: