Android_对话框

1、普通对话框
Android_对话框
1、在xml中:
添加一个弹出对话框的按钮
Android_对话框
2、在java中:(*可有可无,自定义设置)
①、创建对话框建造者对象
Android_对话框
*②、添加标题
Android_对话框
*③、添加标题图标
Android_对话框
*④、添加内容
Android_对话框
*⑤、添加按钮
Android_对话框
⑥、创建对话框对象
Android_对话框
*⑦、设置返回键、框外点击无效化
Android_对话框
⑧、显示对话框
Android_对话框
3、构建者模式、构建链模式创建
链式点设置出来
Android_对话框
4、给按钮加监听(注意:包名):
Android_对话框
假设在本类中加在普通监听:
Android_对话框
!!!!!!则导入的包名为:android.view.View.OnClickListener
但是在对话框中的按钮监听与本类中的监听名都为OnClickListener,在导入本类中的android.view.View.OnClickListener包后不能再次导入其他同名的包,所以在对话框的监听前面要把包名补齐用来区分不同的监听!!!!!!!
Android_对话框

2、条目对话框
Android_对话框
1、在xml中

2、在java中
Android_对话框
效果:

Android_对话框

3、单选对话框
Android_对话框
1、在xml中

2、java中

Android_对话框

效果:
Android_对话框

3、多选对话框
Android_对话框
在java中:
Android_对话框

4、时间对话框
Android_对话框
java中:
时间对话框:DatePickerDialog
Android_对话框
扩展实现功能:
第一次弹出时显示当前时间,选择一个时间点击确定后 ,将时间改变在Button按钮的文本,当再次点击时,弹出的对话框将在上次选择的时间点上(即Button文本的时间点)
1、声明成员变量
Android_对话框
2、在OnCreat()方法中给年月日赋值
要在第一次加载时赋值,如果在监听中赋值则每次点开都是处于当前时间
Android_对话框
3、编写监听(对话框默认会有确定按钮,此监听为确定按钮的对话框)
Android_对话框
这里每次点击确定后,将选中的时间Syear, monthOfYear, dayOfMonth赋值给成员变量year、month、day用于下次点击时的初始化
这里的month不用+1,是应为month没有给用户看,只是给系统看,所以虽然7月时month为6,但是下次初始化系统会将6 变成7 显示给用户

5、自定义对话框
Android_对话框

Android_对话框
可自己通过xml布局文件自定义对话框,并弹出
在java中:
Android_对话框
扩展增加自定义对话框中Button的监听
自定义对话框Dialog本身没有可以设置按钮的方法,需要自己加入
问题1:直接加监听
1、在xml中给自定义对话框中的按钮加监听
Android_对话框
2、设置监听
Android_对话框
3、结果
Android_对话框
4、错误原因
Android_对话框
由于当前是Activity界面,在Activity中没有对话框中的按钮,所以无法找到Button对应的监听方法
(Click方法在Activity上,然而Button在Dialog上没有在Activity上所以不能被找到)

问题2:通过id增加监听
1、在xml中给自定义对话框中的按钮加id
Android_对话框
2、java中 在OnCreate()方法里初始化Button
Android_对话框
Android_对话框

3、增加监听
Android_对话框
4、结果
Android_对话框
5、错误原因

Android_对话框
bt_dig 为空值,无法设置监听
!!!原因是因为获取id的方法是this.findViewById(R.id.bt_dig); 中的this指的是当前的activity,然而Button确实在Dialog中,所以无法获取!!!!

正确:
!!!因为Button是设置在自定义的Dialog上,所以初始化不能通过当前的activity来获取,要在Dialog初始化布局之后通过Button所在的Dialog对象上获取!!!
Android_对话框
结果:
Android_对话框

扩展取消标题栏
由弹出的自定义对话框可知,即使没有设置title标题,系统仍然会保留title的位置,文本为空
取消标题栏:
Android_对话框
效果:
Android_对话框

同样的也可以取消当前activity的标题栏,通过当前的activity对象,并且在加在布局之前设置取消
Android_对话框
效果:

Android_对话框