其实两者是不同方面的东西!
非浮动的 浮动的
你建立一个对话框, 不够的话, 你可以建立多个对话框, 通过switch 不同的id 建立对应的对话框.
protected Dialog onCreateDialog(int id) { Dialog dialog; switch(id) { case 1: dialog = 建立的对话框 break; case 2: dialog = 建立的对话框2 break; default: dialog = null; } return dialog; }
怎么让这些对话框显示出来呢? 在你的程序中(一般是onCreate()方法里面)调用 showDialog(1), 如果是第一次调用, 第一个对话框将被创建, 并且显示; 如果非第一次调用, 那只执行显示第一个对话框的操作. 同样地, showDialog(2) 显示第二个对话框.
在 onCreateDialog(int id) 方法里面的时候, 参数id 还不能作为对话框的标识, 只有在调用了showDialog(int id) 以后, 参数id 才有实际的标识对话框的作用, 如 showDialog(2), 以后你就可以调用 dismissDialog(2) 来关闭对话框一, 不然就会出现异常.
对了, 在对话框显示前, 还有一个回调方法 onPrepareDialog(int id, Dialog dialog), 如果有创建对话框的过程, 这个方法在创建对话框之后, 显示对话框之前调用.
在Activity 类中, 关闭托管对话框的方法是dismissDialog(int id), 注销托管对话框的方法是 removeDialog(int id).
把浮动和托管结合, 会是什么情况呢? 我前面因为不清楚它们的作用, 就把它们搞在一起, 想想已经写出来的东西不用太可惜了! 所以有上面的想法.
结合的过程倒是不难, 但是还是有一个地方要注意的, 那就是开了一个对话框, 但是原来浮动的Activity 界面还是在的, 并且看得到的. 怎么办呢? 第一, 我们把浮动Activity 的标题栏去掉; 看看效果, 啊! 后面还有个白边框框, 怎么办呢? 第二, 把浮动Activity 的背景色设置为黑色的.
//隐藏标题栏 requestWindowFeature(Window.FEATURE_NO_TITLE); //设置背景为黑色 getWindow().setBackgroundDrawableResource(android.R.color.black);
看看效果
当然这样做也有不好的地方, 当你关闭对话框后, 你还必须调用 finish() 关闭 Activity, 并且要重写返回键事件, 并且要把这 浮动Activity 注册到 AndroidManifest.xml 中 , 嘿嘿, 这个对话框的地位貌似提高了呢, 跟组件并排了.
完工后, startActivity() 试试......