我正在开发一个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);
}
};
答案 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();