解決使用者在Datepicker中手動輸入數字後返回當前時間
阿新 • • 發佈:2019-02-15
在使用系統的Detapicker提供使用者選擇日期時,遇到了一個很奇怪的問題。當用戶在Datepicker中手動輸入日期後,點選“確定”返回的是當前的日期,而不是使用者輸入的日期。網上找了很久都沒有找到方法解決。最後在網上找到一個解決方法,就是當用戶點選“確定”的時候,將Datepicker的焦點清除,就能獲取到使用者輸入的日期。
日期選擇程式碼:
AlertDialog.Builder builder = new AlertDialog.Builder( AnnounceActivity.this); builder.setTitle("選擇日期"); final DatePicker datePicker = new DatePicker(MainActivity.this); builder.setView(datePicker); builder.setPositiveButton("確定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { datePicker.clearFocus(); int year = datePicker.getYear(); int month = datePicker.getMonth(); int dayOfMonth = datePicker.getDayOfMonth(); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append(year); int newMonth = month + 1; if (newMonth < 10) { stringBuilder.append("-0").append(newMonth); } else { stringBuilder.append("-").append(newMonth); } if (dayOfMonth < 10) { stringBuilder.append("-0").append(dayOfMonth); } else { stringBuilder.append("-").append(dayOfMonth); } Toast.makeText(MainActivity.this, year + "年" + (month + 1) + "月" + dayOfMonth + "日", Toast.LENGTH_SHORT).show(); } }); builder.setNegativeButton("取消", null); builder.show();
就是在點選“確定”的時候新增:datepicker.clearFocus();