如何在android中设置用户输入的日期?

时间:2014-02-15 21:43:11

标签: java android database datepicker

我正在开发一个Android项目,我希望从用户那里获得出生日期。我正在使用Datepicker,当我点击按钮时,Datepicker会弹出一个对话框。现在我想将所选日期设置为另一个java.util.date对象以将其保存到数据库。我尝试使用setDate(),setMonth方法但不推荐使用并抛出空指针异常。是否有其他有效方法出现此问题?附加我的代码。

private Date dob;
int day,month,year;
private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() {

    // when dialog box is closed, below method will be called.
    public void onDateSet(DatePicker view, int selectedYear,
            int selectedMonth, int selectedDay) {
        year = selectedYear;
        month = selectedMonth;
        day = selectedDay;

        System.out.println("Dob selected="+day+"."+month+"."+year);
        etDOB.setText(day+"/"+month+"/"+year);//setting selected date as Content of edittext 
                                              //(This part is working fine)
        dob.setDate(day);//the following lines throwing null pointer exception
        dob.setMonth(month);
        dob.setYear(year);



    }
};

2 个答案:

答案 0 :(得分:0)

Java Doc说不推荐使用java.util.Date,你应该使用java.util.Calendar代替.. http://docs.oracle.com/javase/6/docs/api/java/util/Calendar.html

然后使用日历,您将能够完成所需的所有请求。

答案 1 :(得分:0)

我会说你正在获得NPE,因为你从来没有真正为你的" dob"变量。因此,在您尝试设置日/月/年时,dob仍为空。

作为OnDateSet回调的第一行,只需为dob指定一个新日期:

    dob = new Date();

甚至更好,您可以直接从DatePicker获取完整的选定日期:

    dob = new Date(view.getCalendarView().getDate());

然后你不需要这3行:

    dob.setDate(day);//the following lines throwing null pointer exception
    dob.setMonth(month);
    dob.setYear(year);

我假设您将日期保存到数据库中的时间以毫秒为单位,因此请在dob上调用getTime()以便稍后获取:

    dob.getTime();