设置使用updateDate一个datepicker之日起()方法 [英] Setting the date of a DatePicker using the updateDate() method

查看:119
本文介绍了设置使用updateDate一个datepicker之日起()方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前在做的日期/时间选择器类的过程。从本质上讲,我已经建立3单选按钮:明天,2天和下周。

我所希望做的是有这些单选按钮自动设定日期选择提前几天所牵涉的金额(1,2,7天未来)。

我试着用updateDate(INT年,INT月,日整型)方法,当用户点击单选按钮,但是当任何一个单选按钮被点击什么也没发生更新我的DatePicker。

有没有一种特定的方式来更改日期选择器的显示的日期不使用的股票代码按钮?

下面是我的code为类:

 包com.inviscidlabs.schooled;

进口的java.util.Calendar;

进口android.app.Activity;
进口android.os.Bundle;
进口android.util.Log;
进口android.view.View;
进口android.widget.DatePicker;
进口android.widget.RadioButton;
进口android.widget.RadioGroup;

公共类的DateTimePicker延伸活动{


    私人的DatePicker日期选择器;

    私人RadioGroup中dtpRadGroup;
    私人单选rTomorrow;
    私人单选rIn2Days;
    私人单选rNextWeek;


    私人日历cNow;
    私人日历℃;


    公共无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        //声明资源
        的setContentView(R.layout.datetimepicker);
        dtpRadGroup =(RadioGroup中)findViewById(R.id.dtp_radiogroup);
        rTomorrow =(单选)findViewById(R.id.dtp_button_tomorrow);
        rIn2Days =(单选)findViewById(R.id.dtp_button_twodays);
        rNextWeek =(单选)findViewById(R.id.dtp_button_nextweek);
        日期选择器=(DatePicker的)findViewById(R.id.dtp_datepicker);

        cNow = Calendar.getInstance();
        cNow.setLenient(真正的); c.setLenient(真正的);
        datePicker.init(cNow.get(Calendar.YEAR),cNow.get(Calendar.MONTH),cNow.get(Calendar.DAY_OF_MONTH),dListener);

    }

    公共无效的onClick(视图v){

        开关(v.getId()){

        案例R.id.dtp_button_finished:

            打破;
        }

    }

    公共无效onRadioButtonClicked(视图v){
        C = Calendar.getInstance();



        开关(v.getId()){

        案例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));

            打破;
        案例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));
            打破;
        案例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));
            打破;
        }
    }





    私人DatePicker.OnDateChangedListener dListener =新DatePicker.OnDateChangedListener(){

        公共无效onDateChanged(DatePicker的观点,年整型,诠释monthOfYear,
                INT DAYOFMONTH){

                日历cPickerDate = Calendar.getInstance();
                cPickerDate.set(年,monthOfYear,DAYOFMONTH);
                INT DAYOFYEAR = cPickerDate.get(Calendar.DAY_OF_YEAR);
                Log.v(年日,将String.valueOf(DAYOFYEAR));



                //自动检查单选按钮,如果用户手动调节选择器
                如果(DAYOFYEAR == cNow.get(Calendar.DAY_OF_YEAR)+1){
                    rTomorrow.setChecked(真正的);
                }
                否则,如果(DAYOFYEAR == cNow.get(Calendar.DAY_OF_YEAR)+2){
                    rIn2Days.setChecked(真正的);
                }
                否则,如果(DAYOFYEAR == cNow.get(Calendar.DAY_OF_YEAR)+7){
                    rNextWeek.setChecked(真正的);
                } 其他 {
                    dtpRadGroup.clearCheck();
                }

        }
    };





}
 

解决方案

使用下面的修改code ::::

 包com.inviscidlabs.schooled;

进口的java.util.Calendar;

进口android.app.Activity;
进口android.os.Bundle;
进口android.util.Log;
进口android.view.View;
进口android.widget.DatePicker;
进口android.widget.RadioButton;
进口android.widget.RadioGroup;

公共类的DateTimePicker延伸活动{

    私有静态诠释TODAY = 0;
    私有静态诠释NEXTDAY = 1;
    私有静态诠释NEXTWEEK = 2;

    私人的DatePicker日期选择器;
    私人RadioGroup中dtpRadGroup;
    私人单选rTomorrow;
    私人单选rIn2Days;
    私人单选rNextWeek;


    私人日历cNow;
    私人日历℃;


    公共无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        //声明资源
        的setContentView(R.layout.datetimepicker);
        dtpRadGroup =(RadioGroup中)findViewById(R.id.dtp_radiogroup);
        rTomorrow =(单选)findViewById(R.id.dtp_button_tomorrow);
        rIn2Days =(单选)findViewById(R.id.dtp_button_twodays);
        rNextWeek =(单选)findViewById(R.id.dtp_button_nextweek);
        日期选择器=(DatePicker的)findViewById(R.id.dtp_datepicker);

        cNow = Calendar.getInstance();
        cNow.setLenient(真正的); c.setLenient(真正的);
        datePicker.init(cNow.get(Calendar.YEAR),cNow.get(Calendar.MONTH),cNow.get(Calendar.DAY_OF_MONTH),dListener);

    }

    公共无效的onClick(视图v){

        开关(v.getId()){

        案例R.id.dtp_button_finished:

            打破;
        }

    }

    公共无效onRadioButtonClicked(视图v){
        C = Calendar.getInstance();



        开关(v.getId()){

        案例R.id.dtp_button_tomorrow:
             c.add(Calendar.DAY_OF_YEAR,1);
             的ShowDialog(今天);
            // datePicker.updateDate(c.get(Calendar.YEAR),c.get(Calendar.MONTH),c.get(Calendar.DAY_OF_MONTH));

            打破;
        案例R.id.dtp_button_twodays:
             c.add(Calendar.DAY_OF_YEAR,2);
             的ShowDialog(NEXTDAY);
             //datePicker.updateDate(c.get(Calendar.YEAR),c.get(Calendar.MONTH),c.get(Calendar.DAY_OF_MONTH));
            打破;
        案例R.id.dtp_button_nextweek:
             c.add(Calendar.DAY_OF_YEAR,7);
             的ShowDialog(NEXTWEEK);
             //datePicker.updateDate(c.get(Calendar.YEAR),c.get(Calendar.MONTH),c.get(Calendar.DAY_OF_MONTH));
            打破;
        }
    }

    @覆盖
    受保护的对话框onCreateDialog(INT ID){
        最后的日历C = Calendar.getInstance();
        开关(ID){
        今天的情况下:
            c.add(Calendar.DAY_OF_YEAR,1);
        案例NEXTDAY:
            c.add(Calendar.DAY_OF_YEAR,2);
        案例NEXTWEEK:
            c.add(Calendar.DAY_OF_YEAR,7);
        }
        DatePickerDialog _date_repeat =新DatePickerDialog(这一点,mDateSetListener,c.get(Calendar.YEAR),c.get(Calendar.MONTH),c.get(Calendar.DAY_OF_MONTH)){
                @覆盖
                公共无效onDateChanged(DatePicker的观点,年整型,诠释monthOfYear,INT DAYOFMONTH)
                {
                     日历cPickerDate = Calendar.getInstance();
                        cPickerDate.set(年,monthOfYear,DAYOFMONTH);
                        INT DAYOFYEAR = cPickerDate.get(Calendar.DAY_OF_YEAR);
                        Log.v(年日,将String.valueOf(DAYOFYEAR));



                        //自动检查单选按钮,如果用户手动调节选择器
                        如果(DAYOFYEAR == cNow.get(Calendar.DAY_OF_YEAR)+1){
                            rTomorrow.setChecked(真正的);
                        }
                        否则,如果(DAYOFYEAR == cNow.get(Calendar.DAY_OF_YEAR)+2){
                            rIn2Days.setChecked(真正的);
                        }
                        否则,如果(DAYOFYEAR == cNow.get(Calendar.DAY_OF_YEAR)+7){
                            rNextWeek.setChecked(真正的);
                        } 其他 {
                            dtpRadGroup.clearCheck();
                        }
                }
            };
        };
        返回_date_repeat;
    }
}
 

I am currently in the process of making a date/time picker class. Essentially, I have created 3 radio buttons: 'tomorrow', 'In 2 days', and 'next week'.

What I am looking to do is have these radio buttons automatically set the date picker ahead the respective amount of days (1, 2, and 7 days ahead).

I tried using the updateDate(int year, int month, int day) method to update my DatePicker when the user clicks the radio button, but nothing happens when any of the radio buttons are clicked.

Is there a specific way to change the datepicker's displayed date WITHOUT using the the ticker buttons?

Here is my code for the class:

 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();
                }

        }
    };





}

解决方案

use the below modified 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 static int TODAY = 0;
    private static int NEXTDAY = 1;
    private static int NEXTWEEK = 2;

    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);
             showDialog(TODAY);
            // 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);
             showDialog(NEXTDAY);
             //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);
             showDialog(NEXTWEEK);
             //datePicker.updateDate(c.get(Calendar.YEAR),c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH));
            break;
        }
    }

    @Override
    protected Dialog onCreateDialog(int id) {
        final Calendar c = Calendar.getInstance();
        switch (id) {
        case TODAY:
            c.add(Calendar.DAY_OF_YEAR, 1);
        case NEXTDAY:
            c.add(Calendar.DAY_OF_YEAR, 2);
        case NEXTWEEK:
            c.add(Calendar.DAY_OF_YEAR, 7);
        }
        DatePickerDialog _date_repeat = new DatePickerDialog(this, mDateSetListener,c.get(Calendar.YEAR),c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH)){
                @Override
                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();
                        }                   
                }
            };  
        };
        return _date_repeat;
    }
}

这篇关于设置使用updateDate一个datepicker之日起()方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆