黑马程序员技术交流社区
标题:
关于android常量id
[打印本页]
作者:
李永康
时间:
2013-4-21 22:42
标题:
关于android常量id
本帖最后由 李永康 于 2013-5-29 20:49 编辑
今天学习android,遇到一个问题,始终不是很明白,代码如下:
private static final int DIALOG_DATEPICKER_ID = 1;// 日期对话框ID
private static final int DIALOG_TIMEPICKER_ID = 2;// 时间对话框ID
复制代码
protected Dialog onCreateDialog(int id) {
// TODO Auto-generated method stub
switch (id) {
case DIALOG_DATEPICKER_ID:
DatePickerDialog dp = new DatePickerDialog(MainActivity.this,
dateCallBack, year, monthOfYear, dayOfMonth);
return dp;
case DIALOG_TIMEPICKER_ID:
TimePickerDialog tp = new TimePickerDialog(MainActivity.this,
timeCallBack, hourOfDay, minute, true);
return tp;
}
return super.onCreateDialog(id);
}
复制代码
这ID,和onCreateDialog(int Id)方法中的id怎么关联上的?获取Id,一般不是用R.id?这个方法吗?
作者:
wang584
时间:
2013-4-22 21:55
本帖最后由 wang584 于 2013-4-22 21:58 编辑
在这里,switch中的的判断条件,不是int类型吗,他这里主要是判断所属的值是否相等,你前面定义的不是int的常量吗,只要只要值相等就可以,在R.id.xxx里面也是个int型的值,那个常量都是对话框里复写常量值
作者:
董波
时间:
2013-4-26 12:42
当第一次调用Activity的showDialog(int id)时,onCreateDialog(int id)方法被调用,onCreateDialog()中的id是个什么东西,要看你在showDialog(int id)中传入的是什么。
其实你的代码中的id就是一个指示器而已,用来指示想要创建DatePickerDialog还是TimePiceerDialog;这和Android调用资源时使用R.id.**的方式应该没多大关系。
作者:
李慧声
时间:
2013-4-26 22:29
R.java文件中的id,是对res目录下的一些控件的标识,就是说给控件一个唯一的身份证,我用的时候能快速准确的找到你,而在onCreateDialog(int id)这个函数中,你调用的是自己自己定义的两个常量值,一般在使用R.id什么之类的等等,都要先得到View视图,View视图中去找id,比如在添加监听器的时候
public void onClick(View v) {
switch(v.getId()) { //首先得得到控件对象,然后找到控件在R.java文件对应的id
case R.id.xxx:
....
break;
.......
}
所以,我觉得,你操作的对象不一样,那么操作的方式就不应样,你并没有操作控件,那么你就没有用的控件的id。
作者:
黄玉昆
时间:
2013-4-26 23:16
如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2