【发布时间】:2020-08-20 15:01:25
【问题描述】:
我在活动 ApplyLeave 中使用以下代码。我想选择日期并将日期、月份和年份保存到公共 int 变量中。
final Calendar calendar = Calendar.getInstance();
DatePickerDialog dialog = new DatePickerDialog(ApplyLeave.this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker arg0, int year, int month, int day_of_month) {
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, (month)); //add +1 for next month calendar
calendar.set(Calendar.DAY_OF_MONTH, day_of_month);
String myFormat = "dd/MM/yyyy";
SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.getDefault());
dtTmp = sdf.format(calendar.getTime());
}
},calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
dialog.getDatePicker().setMinDate(calendar.getTimeInMillis());//used to hide previous date,month and year
calendar.add(Calendar.YEAR, 0);
//dialog.getDatePicker().setMaxDate(calendar.getTimeInMillis());//used to hide future date,month and year
dialog.show();
String[] selTmp = dtTmp.split("/");
selBdate = Integer.parseInt(selTmp[0]);
selBmonth = Integer.parseInt(selTmp[1]);
selByear = Integer.parseInt(selTmp[2]);
stDt = MyUtility.getJulianDay(selByear, selBmonth, selBdate, ApplyLeave.this);
eBegin.setText(dtTmp);
我得到了错误
java.lang.NullPointerException:尝试调用 虚拟方法'java.lang.String[] 空对象引用上的 java.lang.String.split(java.lang.String)' 在 "String[] selTmp = dtTmp.split("/");
行
如果我评论这一行和以下三行,日期会被选中,但需要单击两次才能获得正确的日期集。
日期选择器代码取自Answer by @Sunil。
【问题讨论】:
-
dtTmp为空,因为您已经同步编写了它。最好把它移到onDateSet.. -
我已经移动了所有四行并放置在 dtTmp 声明之后。仍然是空的。现在它读取 dtTmp = sdf.format(calendar.getTime()); String[] selTmp = dtTmp.split("/"); selBdate = Integer.parseInt(selTmp[0]); selBmonth = Integer.parseInt(selTmp[1]); selByear = Integer.parseInt(selTmp[2]);
标签: android datepicker