Configurando a data de um DatePicker usando o método updateDate ()
Eu estou atualmente no processo de fazer uma classe de selecionador de data / hora. Essencialmente, eu criei 3 botões de rádio: 'amanhã', 'em 2 dias' e 'próxima semana'.
O que pretendo fazer é que estes botões de rádio definam automaticamente o selecionador de data para a respectiva quantidade de dias (1, 2 e 7 dias à frente).
Eu tentei usar o updateDate (ano int, int mês, int dia) método para atualizar meu DatePicker quando o usuário clica no botão de rádio, mas nada acontece quando qualquer um dos botões de opção são clicados.
Existe uma maneira específica de alterar a data exibida pelo datepicker SEM usar os botões do ticker?
Aqui está o meu código para a classe:
<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>