Giới thiệu
Tiếp nối bài viết Sử dụng Dialog Trong Android Phần 1. Thì trong bài viết này tôi muốn giới thiệu cho các bạn những phần còn lại của Dialog trong Android.
DatePickerDialog
DatePickerDialog mà một dạng Dialog của hệ thống cho phép bạn chọn ngày trên Dialog đó. Để hình dung Dialog này như thế nào thì các bạn có thể thấy hình dạng của DatePickerDialog dưới đây.
Việc sử dụng vô cùng đơn giản chúng ta chỉ cần khởi tạo đối tượng DatePickerDialog với Constructor:
1 |
public DatePickerDialog(Context context, DatePickerDialog.OnDateSetListener listener, int year, int month, int dayOfMonth) |
Với các đối số lần lượt là
- context: Là context mà DatePickerDialog sử dụng
- listener là listener lắng nghe sự khiện khi chúng ta nhấn OK trên Dialog
- year, month, dayOfMonth là năm, tháng, ngày mà chúng ta hiển thị trên Dialog.
Ví dụ
1 2 3 4 5 6 7 8 9 10 |
Calendar calendar = Calendar.getInstance(); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH); int day = calendar.get(Calendar.DAY_OF_MONTH); DatePickerDialog datePickerDialog = new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { } }, year, month, day); |
Gọi phương thức show() để show dialog
1 |
datePickerDialog.show(); |
Hoặc phương thức dismiss() để tắt Dialog
1 |
datePickerDialog.dismiss(); |
TimePickerDialog
Cũng giống như DatePickerDialog cũng là một dạng Dialog hệ thống nhưng thay vì cho bạn chọn ngày, tháng, năm thì TimePickerDialog cho phép bạn chọn thời gian (giờ, phút giây). Và cũng dễ hình dung các bạn thấy hình ảnh TimePickerDialog ngay dưới:
Việc sử dụng TimePickerDialog hoàn toàn giống như DatePickerDialog. Construct chúng ta truyền vào là
Context, listener, hour, minute, is24ViewHour.
1 2 |
public TimePickerDialog(Context context, OnTimeSetListener listener, int hourOfDay, int minute, boolean is24HourView) |
Ví dụ:
1 2 3 4 5 6 7 8 9 10 11 |
Calendar calendar = Calendar.getInstance(); final int hour = calendar.get(Calendar.HOUR_OF_DAY); int minute = calendar.get(Calendar.MINUTE); TimePickerDialog timePickerDialog = new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { Log.e(TAG, "onTimeSet: " + hour + ", " + minute); } }, hour, minute, true); timePickerDialog.show(); |
Tương tự chúng ta cũng phải gọi phương thức show nếu muốn hiển thị Dialog và dismiss nếu muốn tắt Dialog.
Cả hai ví dụ với DatePickerDialog và TimePickerDialog tôi đều sử dụng Calendar để lấy về ngày và thời gian hiện tại và hiển thị lên 2 loại Dialog ngày.
ProgressDialog
ProgressDialog là Dialog thường dùng để hiển thị thông báo khi chúng ta đang download hay làm một công việc gì đó mà cần phải thông báo cho người dùng đợi.
Ví dụ:
1 2 3 4 |
ProgressDialog progressDialog = new ProgressDialog(MainActivity.this); progressDialog.setTitle("Loading..."); progressDialog.setMessage("Please waiting..."); progressDialog.show(); |
Và khi nào hoàn thành công việc bạn phải gọi phương thức dismiss() để đóng Dialog
ProgressDialog hay được sử dụng kết hợp với AsyncTask
Chúng ta có thể show Dialog trước khi vào chạy phương thức doInBackground trong onPreExcute và dismiss Dialog sau khi doInBackground thực hiện xong trong phương thức onPostExcute.
Kết luận
Như vậy là qua hai bài về Dialog trong Android tôi cũng đã truyền đạt cho các bạn những kiến thức về Dialog mà tôi đã sử trong những Project cũng như công việc của tôi. Hy vọng với những kiến thức mà tôi truyền đạt sẽ có ý nghĩa đối với các bạn. Nếu có bất cứ thắc mắc nào bạn có thể để lại bình luận ở dưới bài viết hoặc liên hệ qua fanpage Eitguide Android để được giải đáp thắc mắc.
cho e hỏi e cũng đang làm về date time, nhưng sử dụng cách trên thì số giờ không đúng, số phút đúng.
tháng thì phải cộng thêm 1.
anh có thể giải thích hộ không ah?
Số giờ, phút giây là do bạn set vào Constructor của các Dialog (DatePickerDialog, TimePickerDialog). Nếu bạn truyền vào như thế nào thì nó chỉ hiển thị như vậy thôi. Nó chỉ là View để hiển thị data do bạn set vào và nhận sự kiện tương tác từ người dùng thôi bạn.
cho mình hỏi mình có thể custom lại DatePickerDialog không, vì dialog này mở dialog mặc định theo từng hệ máy, có 1 số hệ máy dialog rất dở, mình muốn custom lại cho tất cả, nếu đc cho mình xin tài liệu