示範DatePickerDialog的簡單用法
效果如下
運作開始:

點選“Set Date ”後:
選擇日期之後,選擇“完成”:
代碼如下:
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.demo.datepickerdialogdemo.MainActivity" >
<TextView
android:id="@+id/show_date_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Show Date ..." />
<Button
android:id="@+id/set_date_bt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Set Date"/>
</LinearLayout>
MainActivity.java
package com.demo.datepickerdialogdemo;
import java.util.Calendar;
import java.util.Date;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;
public class MainActivity extends Activity {
// 聲明控件
private TextView showDateTV;
private Button setDateBT;
//
private int mYear;
private int mMonth;
private int mDays;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 得目前的年月日
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date(System.currentTimeMillis()));
mYear = calendar.get(Calendar.YEAR);
mMonth = calendar.get(Calendar.MONTH);
mDays = calendar.get(Calendar.DAY_OF_MONTH);
initViews();
}
/**
* 初始化控件 ,注冊事件
* */
private void initViews() {
// 初始化控件
showDateTV = (TextView) findViewById(R.id.show_date_tv);
setDateBT = (Button) findViewById(R.id.set_date_bt);
// 注冊事件
setDateBT.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
DatePickerDialog datePickerDialog = new DatePickerDialog(
MainActivity.this, myDateSetListener, mYear, mMonth,
mDays);
datePickerDialog.show();
}
});
}
DatePickerDialog.OnDateSetListener myDateSetListener = new OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
// TODO Auto-generated method stub
// 更新年月日,以便下次啟動DatePickerDialog時,顯示的是上一次設定的值
mYear = year;
mMonth = monthOfYear;
mDays = dayOfMonth;
Log.i("CXC", "Date:" + mYear + "-" + (mMonth + 1) + "-" + mDays);
showDateTV.setText("Date:" + mYear + "-" + (mMonth + 1) + "-"
+ mDays);
}
};
}
在這裡要注意的是,實作選擇的月份跟顯示的月份相差1.