Установка даты DatePicker с помощью метода updateDate ()
В настоящее время я нахожусь в процессе создания класса выбора даты / времени. По сути, я создал 3 переключателя: «завтра», «через 2 дня» и «на следующей неделе».
Я собираюсь сделать так, чтобы эти переключатели автоматически устанавливали указатель даты на соответствующее количество дней (на 1, 2 и 7 дней вперед).
Я попытался использовать метод updateDate (int year, int month, int day) для обновления моего DatePicker, когда пользователь нажимает переключатель, но ничего не происходит при нажатии любой из переключателей.
Is there a specific way to change the datepicker's displayed date WITHOUT using the the ticker buttons?
Вот мой код для класса:
<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>