Tôi muốn hiển thị cửa sổ bật lên datepicker. Tôi đã tìm thấy một số ví dụ nhưng tôi không nhận được nó đúng cách. Tôi có một nút và tôi muốn rằng khi tôi bấm vào nút hộp thoại datepicker nên bật lên và sau khi thiết lập ngày, ngày nên được lưu trữ trong một biến. Vui lòng cung cấp cho tôi mã mẫu hoặc liên kết tốt.Datepicker: Cách bật datepicker khi nhấp vào nút và giá trị lưu trữ trong biến
Trả lời
Make lớp này là lớp bên trong hoạt động của bạn
nếu bạn muốn thiết lập ngày hiện tại là ngày bạn nhìn thấy khi bạn mở datepicker của bạn. Bạn có thể lấy nó thích này
Calendar c = Calendar.getInstance();
int startYear = c.get(Calendar.YEAR);
int startMonth = c.get(Calendar.MONTH);
int startDay = c.get(Calendar.DAY_OF_MONTH);
class StartDatePicker extends DialogFragment implements DatePickerDialog.OnDateSetListener{
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// TODO Auto-generated method stub
// Use the current date as the default date in the picker
DatePickerDialog dialog = new DatePickerDialog(BookingFormActivity.this, this, startYear, startMonth, startDay);
return dialog;
}
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
// TODO Auto-generated method stub
// Do something with the date chosen by the user
startYear = year;
startMonth = monthOfYear;
startDay = dayOfMonth;
updateStartDateDisplay();
}
}
bạn có thể gọi hộp thoại này bằng cách thiết lập phương pháp này để onClick
public void showStartDateDialog(View v){
DialogFragment dialogFragment = new StartDatePicker();
dialogFragment.show(getFragmentManager(), "start_date_picker");
}
'updateStartDateDisplay' được triển khai ở đâu? Làm thế nào để 'StartDatePicker' biết về phương pháp này? – MOnsDaR
Hãy thử điều này.
Sử dụng mã này khi nhấp vào nút của bạn. Hộp thoại bộ chọn ngày sẽ được hiển thị.
Calendar c = Calendar.getInstance();
int mYear = c.get(Calendar.YEAR);
int mMonth = c.get(Calendar.MONTH);
int mDay = c.get(Calendar.DAY_OF_MONTH);
System.out.println("the selected " + mDay);
DatePickerDialog dialog = new DatePickerDialog(Registration.this,
new mDateSetListener(), mYear, mMonth, mDay);
dialog.show();
Sau đó, cần phải viết mDateSetListener
lớp.
class mDateSetListener implements DatePickerDialog.OnDateSetListener {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
// TODO Auto-generated method stub
// getCalender();
int mYear = year;
int mMonth = monthOfYear;
int mDay = dayOfMonth;
v.setText(new StringBuilder()
// Month is 0 based so add 1
.append(mMonth + 1).append("/").append(mDay).append("/")
.append(mYear).append(" "));
System.out.println(v.getText().toString());
}
}
Vui lòng kiểm tra câu trả lời này và bỏ phiếu.
Làm cách nào để nhập 'Registration.this'? – Abbe
@Abbe 'Registration.this' chỉ là tham chiếu đến thể hiện của hoạt động có tên là' Đăng ký' vì 'DatePickerDialog' cần một' Context' và mọi 'Activity' là một' Context'. Bạn sử dụng 'ActivityName.this' thay vì chỉ' this' khi bạn ở trong một phạm vi khác, như trong một trình nghe sự kiện. –
http://stackoverflow.com/questions/18672094/android-sdk-datepickerfragment-and-textview/18672134#18672134. kiểm tra này – Raghunandan
Có thể trùng lặp của [this] (http://stackoverflow.com/q/14933330/1952459). Tôi khuyên bạn nên tìm kiếm đầu tiên trên Google hoặc tại đây trên StackOverflow cho các vấn đề của bạn và sau đó đăng câu hỏi. –
http://www.mkyong.com/android/android-date-picker-example/ kiểm tra điều này –