Ustawianie daty DatePicker za pomocą metody updateDate ()
Jestem obecnie w trakcie tworzenia klasy wyboru daty / czasu. Zasadniczo stworzyłem 3 przyciski radiowe: „jutro”, „Za 2 dni” i „W przyszłym tygodniu”.
To, co zamierzam zrobić, to ustawić te przyciski opcji automatycznie przed wyborem odpowiedniej liczby dni (1, 2 i 7 dni do przodu).
Próbowałem użyć metody updateDate (int year, int month, int day), aby zaktualizować mój DatePicker, gdy użytkownik kliknie przycisk opcji, ale nic się nie dzieje po kliknięciu któregokolwiek z przycisków opcji.
Czy istnieje konkretny sposób na zmianę daty wyświetlanej datepicker BEZ używania przycisków ticker?
Oto mój kod dla klasy:
package com.inviscidlabs.schooled;
import java.util.Calendar;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.DatePicker;
import android.widget.RadioButton;
import android.widget.RadioGroup;
public class DateTimePicker extends Activity{
private DatePicker datePicker;
private RadioGroup dtpRadGroup;
private RadioButton rTomorrow;
private RadioButton rIn2Days;
private RadioButton rNextWeek;
private Calendar cNow;
private Calendar c;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//declare resources
setContentView(R.layout.datetimepicker);
dtpRadGroup=(RadioGroup) findViewById(R.id.dtp_radiogroup);
rTomorrow=(RadioButton) findViewById(R.id.dtp_button_tomorrow);
rIn2Days=(RadioButton) findViewById(R.id.dtp_button_twodays);
rNextWeek= (RadioButton) findViewById(R.id.dtp_button_nextweek);
datePicker= (DatePicker) findViewById(R.id.dtp_datepicker);
cNow= Calendar.getInstance();
cNow.setLenient(true); c.setLenient(true);
datePicker.init(cNow.get(Calendar.YEAR), cNow.get(Calendar.MONTH), cNow.get(Calendar.DAY_OF_MONTH), dListener);
}
public void onClick(View v){
switch(v.getId()){
case R.id.dtp_button_finished:
break;
}
}
public void onRadioButtonClicked(View v){
c=Calendar.getInstance();
switch(v.getId()){
case R.id.dtp_button_tomorrow:
c.add(Calendar.DAY_OF_YEAR, 1);
datePicker.updateDate(c.get(Calendar.YEAR),c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH));
break;
case R.id.dtp_button_twodays:
c.add(Calendar.DAY_OF_YEAR, 2);
datePicker.updateDate(c.get(Calendar.YEAR),c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH));
break;
case R.id.dtp_button_nextweek:
c.add(Calendar.DAY_OF_YEAR, 7);
datePicker.updateDate(c.get(Calendar.YEAR),c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH));
break;
}
}
private DatePicker.OnDateChangedListener dListener = new DatePicker.OnDateChangedListener() {
public void onDateChanged(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
Calendar cPickerDate = Calendar.getInstance();
cPickerDate.set(year, monthOfYear, dayOfMonth);
int dayOfYear = cPickerDate.get(Calendar.DAY_OF_YEAR);
Log.v("day of year", String.valueOf(dayOfYear));
//automatically checks radio buttons if user manually adjust picker
if(dayOfYear==cNow.get(Calendar.DAY_OF_YEAR)+1){
rTomorrow.setChecked(true);
}
else if(dayOfYear==cNow.get(Calendar.DAY_OF_YEAR)+2){
rIn2Days.setChecked(true);
}
else if(dayOfYear==cNow.get(Calendar.DAY_OF_YEAR)+7){
rNextWeek.setChecked(true);
} else {
dtpRadGroup.clearCheck();
}
}
};
}