Festlegen des Datums eines DatePickers mithilfe der updateDate () -Methode

Ich bin gerade dabei, eine Datums- / Zeitauswahlklasse zu erstellen. Im Wesentlichen habe ich drei Optionsfelder erstellt: "Morgen", "In 2 Tagen" und "Nächste Woche".

Ich möchte, dass diese Optionsfelder die Datumsauswahl automatisch auf die jeweilige Anzahl von Tagen (1, 2 und 7 Tage im Voraus) einstellen.

Ich habe versucht, meinen DatePicker mit der Methode updateDate (int year, int month, int day) zu aktualisieren, wenn der Benutzer auf das Optionsfeld klickt. Wenn auf eines der Optionsfelder geklickt wird, geschieht jedoch nichts.

Gibt es eine spezielle Möglichkeit, das angezeigte Datum des Datumswählers OHNE Verwendung der Ticker-Schaltflächen zu ändern?

Hier ist mein Code für die Klasse:

<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>

Antworten auf die Frage(1)

Ihre Antwort auf die Frage