1. 程式人生 > >解決使用者在Datepicker中手動輸入數字後返回當前時間

解決使用者在Datepicker中手動輸入數字後返回當前時間

在使用系統的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();