我有一个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;
}
答案 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}}。