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:
<code> 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(); } } }; } </code>