В настоящее время я нахожусь в классе выбора даты/времени. По сути, я создал 3 переключателя: «завтра», «через 2 дня» и «на следующей неделе».Установка даты DatePicker с использованием метода updateDate()
Что я хочу сделать, так это, чтобы эти переключатели автоматически устанавливали дату выбора в соответствующее количество дней (на 1, 2 и 7 дней вперед).
Я попытался использовать метод updateDate (int year, int month, int day) для обновления моего DatePicker, когда пользователь нажимает на переключатель, но ничего не происходит, когда нажимается любая из переключателей.
Есть ли способ изменить дату отображения даты, не используя кнопки тикера?
Вот мой код класса:
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();
}
}
};
}
Спасибо за быстрый ответ. Оказывается, код, который у меня был, был прекрасен, но не работал на ПЗУ, который я запускал на своем телефоне (работает нормально на моем планшете). Ваша коррекция работает хорошо, но я должен использовать DatePicker, так как моя цель - создать полустандартный DateTimePickerDialog –