Я в настоящее время использую средство выбора даты и времени для получения отправленной пользователями даты и времени, и затем я установил текст управления на выбранную дату и время.
Я использую следующий код:
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()));
Теперь, в то время как вышеупомянутый блок кода действительно поднимает виджеты даты и времени и устанавливает текст, блок кода выполняется полностью, прежде чем пользователь может выбрать дату.. т.е.: Это поднимает поле даты сначала, затем поле времени по этому, и затем обновляет текст, все без любого взаимодействия с пользователем. Я хотел бы, чтобы виджет даты ожидал для выполнения селектора времени, пока выбор даты не сделан, и я хотел бы, чтобы 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();
}
};
Заранее спасибо
Слушать, когда DatePickerDialog закрывается с помощью DatePickerDialog.OnDateSetListener. При вызове onDateSet(...) показать следующий диалог (TimePickerDialog).
Edit: I've pasted code that you asked
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();
}
}