使用数据从日期选择器的Andr​​oid版 [英] Android using data out of datepicker

查看:126
本文介绍了使用数据从日期选择器的Andr​​oid版的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试着从我的日期选择器获得日/月/年。我有月恩的日子永远是正确的问题。我下面给你的code。月是正确的,但在一个月十二月失败。这一天是永远正确的。

 公共类myOnDateChangedListener实现OnDateChangedListener {    onDateChanged公共无效(查看的DatePicker,年整型,诠释monthOfYear,
            INT请将dayOfMonth){
        如果(view.getId()== R.id.datePicker1){
            朝九特派= view.getDayOfMonth();
            如果(view.getMonth()== 11){
                startMonth = 12;
            }其他{
            startMonth =(view.getMonth()+ 1);
            }
            startYear = view.getYear();        }
        如果(view.getId()== R.id.datePicker2){
            endday指定= view.getDayOfMonth();
            如果(view.getMonth()== 11){
                endMonth = 12;
            }其他{
            endMonth =(view.getMonth()+ 1);
            }            endYear = view.getYear();        }    }}


解决方案

为什么要使用的视图值,而不是在方法传递的值?也无须每月== 11的特殊情况,试试这个code(修改自己):

 公共无效onDateChanged(查看的DatePicker,年整型,诠释monthOfYear,
            INT请将dayOfMonth){
        如果(view.getId()== R.id.datePicker1){
            朝九特派=请将dayOfMonth;
            startMonth = monthOfYear + 1;
            startYear =年;
        }
        如果(view.getId()== R.id.datePicker2){
            endday指定=请将dayOfMonth;
            endMonth = monthOfYear + 1;
            endYear =年;
        }    }

修改:看了您的评论之后,我觉得你可能是因为在你身边其他一些困惑的问题:我的意思是一个事实,即在Java Date类构造函数是这样的这个

 公开日期(INT年,月整型,诠释为准)

初​​始化一月第一千九百今年1日起的日期。警告:本月为0至11和1到31之间的日间看看构造。如果您要检测的问题是否在自身的DatePicker或之后在Java code尝试登录到缩小的原因的范围。

Im trying to get the Day / Month / Year from my datepicker. I have the problem that the Month en the day never is correct. I give you the code below. The month is correct but it fails when the month is december. The day is never correct.

    public class myOnDateChangedListener implements OnDateChangedListener {

    public void onDateChanged(DatePicker view, int year, int monthOfYear,
            int dayOfMonth) {
        if (view.getId() == R.id.datePicker1) {
            startDay = view.getDayOfMonth();
            if(view.getMonth() == 11){
                startMonth = 12;
            }else{
            startMonth = (view.getMonth() + 1);
            }
            startYear = view.getYear();

        }
        if (view.getId() == R.id.datePicker2) {
            endDay = view.getDayOfMonth();
            if(view.getMonth() == 11){
                endMonth = 12;
            }else{
            endMonth = (view.getMonth() + 1);
            }

            endYear = view.getYear();

        }

    }

}

Why do you use the view values, not the values passed in the method? Also no need for the special case of month == 11. Try this code (modified your own):

public void onDateChanged(DatePicker view, int year, int monthOfYear,
            int dayOfMonth) {
        if (view.getId() == R.id.datePicker1) {
            startDay = dayOfMonth;
            startMonth = monthOfYear + 1;
            startYear = year;
        }
        if (view.getId() == R.id.datePicker2) {
            endDay = dayOfMonth;
            endMonth = monthOfYear + 1;
            endYear = year;
        }

    }

EDIT: After reading your comment I feel the problem you get might be because of some other confusion on your side: I mean the fact that the Java Date class constructor that goes like this:

public Date(int year, int month, int date)

Initializes the date starting from 1st of January 1900th year. Warning: the month is between 0 and 11 and the day between 1 and 31. Take a look at the constructor. If you want to detect whether the problem is in the DatePicker itself or after that in the Java code try logging to narrow the scope of causes.

这篇关于使用数据从日期选择器的Andr​​oid版的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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