黑马程序员技术交流社区

标题: 关于android常量id [打印本页]

作者: 李永康    时间: 2013-4-21 22:42
标题: 关于android常量id
本帖最后由 李永康 于 2013-5-29 20:49 编辑

今天学习android,遇到一个问题,始终不是很明白,代码如下:
  1. private static final int DIALOG_DATEPICKER_ID = 1;// 日期对话框ID
  2.         private static final int DIALOG_TIMEPICKER_ID = 2;// 时间对话框ID
复制代码
  1. protected Dialog onCreateDialog(int id) {
  2.                 // TODO Auto-generated method stub
  3.                 switch (id) {
  4.                 case DIALOG_DATEPICKER_ID:
  5.                         DatePickerDialog dp = new DatePickerDialog(MainActivity.this,
  6.                                         dateCallBack, year, monthOfYear, dayOfMonth);
  7.                         return dp;

  8.                 case DIALOG_TIMEPICKER_ID:
  9.                         TimePickerDialog tp = new TimePickerDialog(MainActivity.this,
  10.                                         timeCallBack, hourOfDay, minute, true);
  11.                         return tp;
  12.                 }
  13.                 return super.onCreateDialog(id);
  14.         }
复制代码
这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