Date Picker
可以用DatePicker窗口小部件來選擇日期,用戶可以選擇年月日。
本教程裡,你將創建一個DatePickerDialog對話框,點擊按鈕會彈出一個懸浮的日期選擇器對話框。當用戶設置日期以後,一個TextView會顯示剛設置的日期。
創建一個工程:HelloDatePicker.
打開 res/layout/main.xml 並修改如下:
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:Android="http://schemas.android.com/apk/res/android"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="vertical">
- <TextView android:id="@+id/dateDisplay"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text=""/>
- <Button android:id="@+id/pickDate"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="Change the date"/>
- </LinearLayout>
采用LinearLayout布局,裡面用一個TextView來顯示日期,和一個Button,點擊它會打開DatePickerDialog對話框。
打開HelloDatePicker.java ,添加下列成員變量:
- private TextView mDateDisplay;
- private Button mPickDate;
- private int mYear;
- private int mMonth;
- private int mDay;
-
- static final int DATE_DIALOG_ID = 0;
第一組變量定義了界面裡的View(TextView、Button)以及日期的年月日。靜態整數DATE_DIALOG_ID 是Dialog的ID,用來創建日期選擇器。
修改onCreate() 方法如下:
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
-
- // capture our View elements
- mDateDisplay = (TextView) findViewById(R.id.dateDisplay);
- mPickDate = (Button) findViewById(R.id.pickDate);
-
- // add a click listener to the button
- mPickDate.setOnClickListener(new View.OnClickListener() {
- public void onClick(View v) {
- showDialog(DATE_DIALOG_ID);
- }
- });
-
- // get the current date
- final Calendar c = Calendar.getInstance();
- mYear = c.get(Calendar.YEAR);
- mMonth = c.get(Calendar.MONTH);
- mDay = c.get(Calendar.DAY_OF_MONTH);
-
- // display the current date (this method is below)
- updateDisplay();
- }
首先,加載main.xml布局文件。然後使用findViewById(int)來引用TextView和Button。
然後為Button設置一個 View.OnClickListener點擊事件監聽器,當Button被點擊後,showDialog(int)方法會被調用,該方法創建一個ID為DATE_DIALOG_ID的日期選擇器對話框。
showDialog(int)方法讓當前Activity管理對話框的生命周期,同時調用onCreateDialog(int) (將在下一步定義)回調函數顯示對話框。
在設置點擊事件監聽器以後,創建一個Calendar對象,讀取當前年、月、日。最後,調用updateDisplay() 方法,讓TextView顯示當前日期。