天天看點

DatePickerDialog 簡單用法

示範DatePickerDialog的簡單用法

效果如下

運作開始:

DatePickerDialog 簡單用法

點選“Set Date ”後:

DatePickerDialog 簡單用法

選擇日期之後,選擇“完成”:

DatePickerDialog 簡單用法

代碼如下:

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.