Ich bin gerade dabei, eine Datum/Uhrzeit-Auswahlklasse zu erstellen. Im Wesentlichen habe ich 3 Radiobuttons erstellt: "Morgen", "In 2 Tagen" und "Nächste Woche".Einstellen des Datums eines DatePickers mit der updateDate() -Methode
Was ich schauen möchte, ist, dass diese Optionsfelder die Datumsauswahl automatisch auf die entsprechende Anzahl von Tagen (1, 2 und 7 Tage voraus) einstellen.
Ich habe versucht, mit der Methode updateDate (int year, int month, int day) meinen DatePicker zu aktualisieren, wenn der Benutzer auf das Optionsfeld klickt, aber nichts passiert, wenn auf eines der Optionsfelder geklickt wird.
Gibt es eine spezielle Möglichkeit, das angezeigte Datum des Datums zu ändern, OHNE die Ticker-Tasten zu verwenden?
Hier ist mein Code für die Klasse:
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();
}
}
};
}
Danke für die schnelle Antwort. Es stellt sich heraus, dass der Code, den ich hatte, in Ordnung war, aber nicht auf dem ROM funktionierte, das ich auf meinem Telefon lief (funktioniert auf meinem Tablet OK). Ihre Korrektur funktioniert gut, aber ich muss DatePicker verwenden, da ich einen halb angepassten DateTimePickerDialog erstellen soll –