我可以在同一个“onCreateDialog”中有2个对话框吗?

时间:2012-08-29 18:55:11

标签: android eclipse datepicker timepicker

我有一个onCreateDialog设置,我需要放置2个Dialogs(Datepicker和Timepicker),但当我把它们都放在onCreateDialog中时,它只打开第一个是Datepicker。

代码:

    @Override
protected Dialog onCreateDialog(int id) {
    //date picker
            switch (id) {
                case DATE_DIALOG_ID:
               // set date picker as current date
                    return new DatePickerDialog(this, datePickerListener, year, month,day);
                }
            //time picker
            switch (id) {
                case TIME_DIALOG_ID:
                    //set time picker as current time
                    return new TimePickerDialog(this, timePickerListener, hour, minute,false);
                    }
            return null;
}

1 个答案:

答案 0 :(得分:5)

是的,你可以,但你的switch无效。 switch的正确语法是:

switch( variable ) {
  case value1:
      ...
      break;
  case value X:
      ...
      break;
}

并且可选default来捕获您没有明确case的所有其他值。你有两个没用的开关。你纠正的代码是:

AlertDialog myDialog = null;

switch (id) {
  case DATE_DIALOG_ID:
    // set date picker as current date
    myDialog = new DatePickerDialog(this, datePickerListener, year, month,day);
    break;

  case TIME_DIALOG_ID:
    //set time picker as current time
    myDialog = new TimePickerDialog(this, timePickerListener, hour, minute,false);
    break;

}

return myDialog;

您的ID也必须是唯一的,但是一旦修复了switch,编译器会在设置为相同值时显示错误(因为给定的case不能超过public static final int TIME_DIALOG_ID = 1; public static final int DATE_DIALOG_ID = 2; 值)。

return

编辑:我再次对此进行了重新设计,因为我个人不喜欢该方法的多个退出点 - 您有很多{{1}}。