CyStack logo
  • Sản phẩm & Dịch vụ
  • Giải pháp
  • Bảng giá
  • Công ty
  • Tài liệu
Vi

vi

Mục lục

Trang chủBlogCách sử dụng DatePickerDi...
Android

Cách sử dụng DatePickerDialog và TimePickerDialog trong Android

4 phút đọc05/08/2025
CyStack Author
Chris Pham

Technical Writer

0 lượt xem
Reading Time: 4 minutes

Giao diện chọn ngày giờ được sử dụng rất nhiều trong các ứng dụng Android. Trong bài hướng dẫn này, chúng ta sẽ tìm hiểu cách sử dụng các DatePickerDialog và TimePickerDialog.

DatePickerDialog và TimePickerDialog trong Android

Các thành phần này cho phép người dùng chọn ngày và giờ thông qua một giao diện có thể được tùy chỉnh cho từng ứng dụng. Để tích hợp Dialog chọn ngày giờ trong Android, chúng ta sẽ sử dụng các class DatePickerDialog và TimePickerDialog cùng với class Calendar.

DatePickerDialog và TimePickerDialog

Mặc dù Date Picker và Time Picker có thể được dùng như các widget độc lập, chúng lại chiếm khá nhiều không gian trên màn hình. Vì vậy, sử dụng chúng bên trong một Dialog là một lựa chọn tốt hơn. Rất may là Android đã cung cấp sẵn các class DatePickerDialog và TimePickerDialog cho việc này.

Các class trên lần lượt có các phương thức callback (gọi lại) là onDateSetListener()onTimeSetListener(). Chúng sẽ được gọi khi người dùng đã chọn xong ngày hoặc giờ.

Class DatePickerDialog có một constructor (hàm khởi tạo) gồm 5 tham số được liệt kê dưới đây.

  1. Context: Yêu cầu context (ngữ cảnh) của ứng dụng.
  2. Callback Function: onDateSet() được gọi khi người dùng xác nhận chọn ngày, với các tham số sau:
    • int year: Lưu năm đã được chọn từ dialog.
    • int monthOfYear: Lưu tháng đã được chọn từ dialog.
    • int dayOfMonth: Lưu ngày đã được chọn từ dialog.
  3. int mYear: Hiển thị năm hiện tại khi dialog bật lên.
  4. int mMonth: Hiển thị tháng hiện tại khi dialog bật lên.
  5. int mDay: Hiển thị ngày hiện tại khi dialog bật lên.

Class TimePickerDialog có một constructor gồm 5 tham số được liệt kê dưới đây.

  1. Context: Yêu cầu context của ứng dụng.
  2. Callback Function: onTimeSet() được gọi khi người dùng xác nhận chọn giờ, với các tham số sau:
    • int hourOfDay: Lưu giờ trong ngày đã được chọn từ dialog.
    • int minute: Lưu phút đã được chọn từ dialog.
  3. int mHours: Hiển thị giờ hiện tại khi dialog bật lên.
  4. int mMinute: Hiển thị phút hiện tại khi dialog bật lên.
  5. boolean false: Nếu được đặt là false, dialog sẽ hiển thị thời gian ở định dạng 24 giờ.

Ứng dụng Android ví dụ sử dụng Date Time Picker

Dưới đây là cấu trúc của project Android trong ví dụ này:

Cấu trúc ứng dụng Dialog chọn ngày giờ trong Android

File activity_main.xml bao gồm hai Button để kích hoạt các dialog Date Picker và Time Picker, cùng hai EditText để hiển thị thời gian do người dùng chọn. Dưới đây là code XML cho giao diện này.



    

    

Code của class MainActivity.java như dưới đây:

package com.journaldev.datetimepickerdialog;

import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TimePicker;

import java.util.Calendar;

public class MainActivity extends AppCompatActivity implements
        View.OnClickListener {

    Button btnDatePicker, btnTimePicker;
    EditText txtDate, txtTime;
    private int mYear, mMonth, mDay, mHour, mMinute;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnDatePicker=(Button)findViewById(R.id.btn_date);
        btnTimePicker=(Button)findViewById(R.id.btn_time);
        txtDate=(EditText)findViewById(R.id.in_date);
        txtTime=(EditText)findViewById(R.id.in_time);

        btnDatePicker.setOnClickListener(this);
        btnTimePicker.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {

        if (v == btnDatePicker) {

            // Get Current Date
            final Calendar c = Calendar.getInstance();
            mYear = c.get(Calendar.YEAR);
            mMonth = c.get(Calendar.MONTH);
            mDay = c.get(Calendar.DAY_OF_MONTH);

            DatePickerDialog datePickerDialog = new DatePickerDialog(this,
                    new DatePickerDialog.OnDateSetListener() {

                        @Override
                        public void onDateSet(DatePicker view, int year,
                                              int monthOfYear, int dayOfMonth) {

                            txtDate.setText(dayOfMonth + "-" + (monthOfYear + 1) + "-" + year);

                        }
                    }, mYear, mMonth, mDay);
            datePickerDialog.show();
        }
        if (v == btnTimePicker) {

            // Get Current Time
            final Calendar c = Calendar.getInstance();
            mHour = c.get(Calendar.HOUR_OF_DAY);
            mMinute = c.get(Calendar.MINUTE);

            // Launch Time Picker Dialog
            TimePickerDialog timePickerDialog = new TimePickerDialog(this,
                    new TimePickerDialog.OnTimeSetListener() {

                        @Override
                        public void onTimeSet(TimePicker view, int hourOfDay,
                                              int minute) {

                            txtTime.setText(hourOfDay + ":" + minute);
                        }
                    }, mHour, mMinute, false);
            timePickerDialog.show();
        }
    }
}

Trong đoạn code trên, chúng ta đã tạo một đối tượng Calendar bằng Calendar.getInstance() để lấy ngày và giờ hiện tại, sau đó dùng các giá trị này để khởi tạo picker.

Lưu ý rằng giao diện của lịch và đồng hồ hiển thị trong dialog sử dụng theme mặc định được cung cấp bởi AppCompat Theme. Dưới đây là hình lúc chạy của ứng dụng ví dụ.

Dialog chọn ngày giờ trong Android

Tổng kết

Ta có thể đưa Date Time Picker vào trong các app Android để cung cấp một giải pháp chọn thời giờ tối ưu, giúp việc nhập liệu trở nên thuận tiện hơn cho người dùng. Bạn có thể tải về project ví dụ từ link này để tham khảo và học cách tích hợp nó trong các dự án Android của mình.

Về tác giả

Chris Pham
Chris PhamTechnical Writer

I have over 5 years of experience writing technical documentation for tech products, making them accessible and user-friendly. My focus is always on providing clear and precise information. @#@ Tôi đã có hơn 5 năm kinh nghiệm viết tài liệu kỹ thuật cho các sản phẩm công nghệ, giúp người dùng dễ dàng tiếp cận và sử dụng. Tôi luôn tập trung vào việc cung cấp thông tin chính xác và dễ hiểu.

Cập nhật thông tin mới nhấtNhận các thông tin mới nhất về mối đe dọa, báo cáo an ninh mạng từ CyStack về hòm thư điện tử của bạn

Thảo luận (0)

Đăng nhập để thảo luận

Bài viết liên quan