轉自:http://blog.csdn.net/jamesliulyc/article/details/6362621
日期和時間選擇對話框,首先是要獲得當前時間,這裏用 java類中的Calendar來獲得日期和時間(也可以用Date,但是不提倡,Date部分方法已經註釋爲過時), Calendar是一個抽象類,是通過getInstance()來獲得實例
日期和時間選擇對話框無需在像前面一樣借組與AlertDialog.Builder來作爲內容的載體,有直接的Dialog,其實源碼裏面已經包括了Builder。
1、DatePickerDialog 是日期Dialog,如下建立
dialog = new DatePickerDialog(this,
dateListener,
calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH));
this 表示當前 Acitivity,表示這是當前Acitivity的對話框
dateListener爲產生日期事件的監聽器,這裏是通過DatePickerDialog.OnDateSetListener來獲得,代碼如下
DatePickerDialog.OnDateSetListener dateListener =
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker,
int year, int month, int dayOfMonth) {
EditText editText =
(EditText) findViewById(R.id.editText);
//Calendar月份是從0開始,所以month要加1
editText.setText("你選擇了" + year + "年" +
(month+1) + "月" + dayOfMonth + "日");
}
};
這裏注意的是calendar.getCalendar(Calendar.MONTH), Calendar類中是從0開始取月份的,但是這裏DatePickerDialog已經做了處理。
2、TimePickerDialog爲時間選擇對話框,實現代碼如下:
dialog = new TimePickerDialog(this, timeListener,
calendar.get(Calendar.HOUR_OF_DAY),
calendar.get(Calendar.MINUTE),
false); //是否爲二十四制
timeListener 是一個TimePickerDialog.OnTimeSetListener 實例。
效果圖如下:
這是日期選擇對話框 這是時間選擇對話框
實現步驟:
第一步:一個用來顯示選擇的內容的輸入框和兩個用來顯示日期和時間的按鈕
res/layout/date_time_dialog_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<EditText android:id="@+id/editText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:editable="false"
android:cursorVisible="false"/>
<Button android:id="@+id/btnDate"
android:text="顯示日期選擇對話框"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<Button android:id="@+id/btnTime"
android:text="顯示時間選擇對話框"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
第二步:
在DateTimeDialogActivity的OnCreate方法裏面要對兩個button進行單擊事件處理,OnCreateDialog來處理產生對話框
src/com/dialog/activity/DateTimeDialogActivity.java
package com.dialog.activity;
import java.util.Calendar;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TimePicker;
public class DateTimeDialogActivity extends Activity {
private final int DATE_DIALOG = 1;
private final int TIME_DIALOG = 2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.date_time_dialog_layout);
View.OnClickListener dateBtnListener =
new BtnOnClickListener(DATE_DIALOG);
Button btnDate = (Button) findViewById(R.id.btnDate);
btnDate.setOnClickListener(dateBtnListener);
View.OnClickListener timeBtnListener =
new BtnOnClickListener(TIME_DIALOG);
Button btnTime = (Button) findViewById(R.id.btnTime);
btnTime.setOnClickListener(timeBtnListener);
}
protected Dialog onCreateDialog(int id) {
//用來獲取日期和時間的
Calendar calendar = Calendar.getInstance();
Dialog dialog = null;
switch(id) {
case DATE_DIALOG:
DatePickerDialog.OnDateSetListener dateListener =
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker,
int year, int month, int dayOfMonth) {
EditText editText =
(EditText) findViewById(R.id.editText);
//Calendar月份是從0開始,所以month要加1
editText.setText("你選擇了" + year + "年" +
(month+1) + "月" + dayOfMonth + "日");
}
};
dialog = new DatePickerDialog(this,
dateListener,
calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH));
break;
case TIME_DIALOG:
TimePickerDialog.OnTimeSetListener timeListener =
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker timerPicker,
int hourOfDay, int minute) {
EditText editText =
(EditText) findViewById(R.id.editText);
editText.setText("你選擇了" + hourOfDay + "時" +
minute + "分");
}
};
dialog = new TimePickerDialog(this, timeListener,
calendar.get(Calendar.HOUR_OF_DAY),
calendar.get(Calendar.MINUTE),
false); //是否爲二十四制
break;
default:
break;
}
return dialog;
}
/*
* 成員內部類,此處爲提高可重用性,也可以換成匿名內部類
*/
private class BtnOnClickListener implements View.OnClickListener {
private int dialogId = 0; //默認爲0則不顯示對話框
public BtnOnClickListener(int dialogId) {
this.dialogId = dialogId;
}
@Override
public void onClick(View view) {
showDialog(dialogId);
}
}
}
源碼下載地址:http://download.csdn.net/source/3225379