アクティビティでDatePicketを使用しています。
ユーザーが選択した日付を今日の日付に制限したいと思います。
今日の日付よりも大きい日付を選択できないようにする必要があります。
ありがとうございました。
アクティビティでDatePicketを使用しています。
ユーザーが選択した日付を今日の日付に制限したいと思います。
今日の日付よりも大きい日付を選択できないようにする必要があります。
ありがとうございました。
はい、非常に簡単に行うことができます。ここでの検証は次の例です。
if(dateObj1.before(dateObj2) || dateObj1.equals(dateObj2)){
//the program runs normally
}
else{
new AlertDialog.Builder(PM_Edit.this)
.setTitle("Wrong Data Input!")
.setMessage("The end Date must be Before the start Date, please insert new Date values")
.setNeutralButton("Ok",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
}
}).show();
}
クレジット: http ://www.brighthub.com/mobile/google-android/articles/41545.aspx
DatePicker datePicker = (DatePicker)findViewById(R.id.new_date_picker);
datePicker.init(year, month, day, new OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear,int dayOfMonth) {
if(isDateAfter(view)){
Calendar mCalendar = Calendar.getInstance();
view.init(mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), mCalendar.get(Calendar.DAY_OF_MONTH), this);
}
}
private boolean isDateAfter(DatePicker tempView) {
Calendar mCalendar = Calendar.getInstance();
Calendar tempCalendar = Calendar.getInstance();
tempCalendar.set(tempView.getYear(), tempView.getMonth(), tempView.getDayOfMonth(), 0, 0, 0);
if(tempCalendar.after(mCalendar))
return true;
else
return false;
}
});
私はDatePickerを使用していませんが、ピッカーが表示する最大日付を制限できるメソッドはドキュメントに示されていません。それでも、ピッカーが返す日付をいつでも確認でき、検証基準についてユーザーに通知できます。
私はシェイクに同意します。
入力した日付に検証を行うことを検討してください。無効な場合は、ユーザーに通知して、DatePickerを再度起動してください。
それ以外は、カスタムウィジェットかもしれませんが、これを行うデフォルトの方法は見ていません。