2010-05-27 34 views
1

我目前使用日期和時間選擇器檢索用戶提交的日期和時間,然後將控件的文本設置爲選定的日期和時間。優雅的解決方案來檢索自定義日期和時間?

我使用下面的代碼:

new DatePickerDialog(newlog3.this, d, calDT.get(Calendar.YEAR), calDT.get(Calendar.MONTH), calDT.get(Calendar.DAY_OF_MONTH)).show(); 

new TimePickerDialog(newlog3.this, t, calDT.get(Calendar.HOUR_OF_DAY), calDT.get(Calendar.MINUTE), true).show(); 

optCustom.setText(fmtDT.format(calDT.getTime())); 

現在,雖然上面的代碼塊並調出日期和時間窗口小部件和設置文本,代碼塊被完全執行之前,用戶可以選擇日期.. ie:它首先打開日期框,然後打開日期框,然後更新文本,所有這些都沒有任何用戶交互。我希望日期小部件等待執行時間選擇器,直到日期選擇完成,並且我希望只有在完成時間小部件後才能執行settext。

這怎麼可能?還是有更優雅的解決方案逃避我?

編輯:這是用於DatePickerDialog/TimePickerDialog的代碼,其位於類中:預先

DatePickerDialog.OnDateSetListener d=new DatePickerDialog.OnDateSetListener() { 
     public void onDateSet(DatePicker view, int year, int monthOfYear, 
        int dayOfMonth) { 
      calDT.set(Calendar.YEAR, year); 
      calDT.set(Calendar.MONTH, monthOfYear); 
      calDT.set(Calendar.DAY_OF_MONTH, dayOfMonth); 
      //updateLabel(); 
     } 
     }; 
TimePickerDialog.OnTimeSetListener t=new TimePickerDialog.OnTimeSetListener() { 
     public void onTimeSet(TimePicker view, int hourOfDay, 
          int minute) { 
      calDT.set(Calendar.HOUR_OF_DAY, hourOfDay); 
      calDT.set(Calendar.MINUTE, minute); 
      //updateLabel(); 
     } 
     }; 

由於

回答

2

收聽時DatePickerDialogDatePickerDialog.OnDateSetListener關閉。當調用onDateSet(...)時,顯示下一個對話框(TimePickerDialog)。

編輯:我貼你問

public class YourActivity extends Activity {  

private final Calendar selectedDate = Calendar.getInstance(); 

final DatePickerDialog.OnDateSetListener dateListener = new DatePickerDialog.OnDateSetListener() { 
     public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
      selectedDate.set(Calendar.YEAR, year); 
      selectedDate.set(Calendar.MONTH, monthOfYear); 
      selectedDate.set(Calendar.DAY_OF_MONTH, dayOfMonth); 
      new TimePickerDialog(YourActivity.this, timeListener, 0, 0, true).show(); 
     } 
     }; 

final TimePickerDialog.OnTimeSetListener timeListener = new TimePickerDialog.OnTimeSetListener() { 
     public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
      selectedDate.set(Calendar.HOUR_OF_DAY, hourOfDay); 
      selectedDate.set(Calendar.MINUTE, minute);    
      // push flow to the next step 
     } 
     }; 

public void startTimeWizard() { 
    final Calendar calendar = Calendar.getInstance(); 
    calendar.setTimeInMillis(System.currentTimeMillis());  
    new DatePickerDialog(this, dateListener, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)).show();  
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState);   
    setContentView(R.layout.main); 
    startTimeWizard(); 
} 

}代碼

+0

你認爲你可以給一個代碼示例?我目前在我的課堂上使用上述聽衆,但我將如何調整他們以監視對話結束? – kefs 2010-05-27 09:48:57

+0

再次感謝..我想出了你的第一個建議,並在我的最後有相同的代碼,但我的settext沒有更新(或所以我想..我有textview設置爲隱形)..無論如何..它是現在工作。只是注意到你沒有在timedialog上設置當前的小時/分鐘..:p – kefs 2010-05-27 10:26:47