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

baT*_*imá 0 eclipse android 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;
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*ski 5

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

switch( variable ) {
  case value1:
      ...
      break;
  case value X:
      ...
      break;
}
Run Code Online (Sandbox Code Playgroud)

并可选择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;
Run Code Online (Sandbox Code Playgroud)

您的ID也必须是唯一的,但是一旦修复了switch,如果将它设置为相同的值,编译器将显示错误(因为case给定的值不能超过一个).

public static final int TIME_DIALOG_ID = 1;
public static final int DATE_DIALOG_ID = 2;
Run Code Online (Sandbox Code Playgroud)

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