2012-08-29 55 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」它說重複案件 –

相關問題