2012-08-29 56 views
0

我有一个onCreateDialog设置,我需要把2个对话框(Datepicker和Timepicker),但是当我把他们俩onCreateDialog它只打开第一个Datepicker。我可以在同一个“onCreateDialog”中有2个对话框吗?

代码:

@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

显示与呼叫者相关的代码。 – kosa

+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

+0

你能告诉我完整的代码吗?即时通讯真的是新的这一点,我在这里尝试了一些东西,但是,没有工作只是出现了很多错误 –

+0

更新了我的答案。 –

+0

关于“案件DATE_DIALOG_ID”和“案件TIME_DIALOG_ID”它说重复案件 –

相关问题