A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李永康 中级黑马   /  2013-4-21 22:42  /  1807 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李永康 于 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?这个方法吗?


评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

4 个回复

正序浏览
如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢
回复 使用道具 举报
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。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
当第一次调用Activity的showDialog(int id)时,onCreateDialog(int id)方法被调用,onCreateDialog()中的id是个什么东西,要看你在showDialog(int id)中传入的是什么。
其实你的代码中的id就是一个指示器而已,用来指示想要创建DatePickerDialog还是TimePiceerDialog;这和Android调用资源时使用R.id.**的方式应该没多大关系。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 wang584 于 2013-4-22 21:58 编辑

在这里,switch中的的判断条件,不是int类型吗,他这里主要是判断所属的值是否相等,你前面定义的不是int的常量吗,只要只要值相等就可以,在R.id.xxx里面也是个int型的值,那个常量都是对话框里复写常量值

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马