2012年1月19日木曜日

DatePickerDialog

日付を指定したい場合は、DatePickerDialog (日付選択ダイアログ)を使います。年・月・日を直接入力したり、1ずつアップ/ダウンして、日付を指定します。


DatePickerDialog

DatePickerDialogで選択した日付を画面に表示するサンプルです。

Androidプロジェクトの設定
プロジェクト名:DatePickerDialogTest1a
ビルドターゲット:Android 2.1-update1
アプリケーション名:DatePickerDialogTest1a
パッケージ名:jp.co.triware.samples.DatePickerDialogTest1a
アクティビティーの作成:DatePickerDialogTest1aActivity
最小SDKバージョン:7

DatePickerDialogTest1aActivity.java
package jp.co.triware.samples.DatePickerDialogTest1a;

import java.util.Calendar;

import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;

public class DatePickerDialogTest1aActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // 表示エリア
        final TextView tvDate = (TextView)findViewById(R.id.date_tv);

        // 初期値設定(今日の日付)
        Calendar cal = Calendar.getInstance();
        int nYear = cal.get(Calendar.YEAR);
        int nMonth = cal.get(Calendar.MONTH);
        int nDay = cal.get(Calendar.DAY_OF_MONTH);

        // DatePickerDialogの設定
        final DatePickerDialog datePickerDialog = new DatePickerDialog(this,
            new OnDateSetListener() {
                @Override
                public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                    tvDate.setText(year + " / " + (monthOfYear + 1) + " / " + dayOfMonth);
                }
            }, nYear, nMonth, nDay);

        // DatePickerDialogを呼び出すボタン
        final Button btnDate = (Button)findViewById(R.id.date_btn);
        btnDate.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                datePickerDialog.show();
            }
        });
    }
}

DatePickerDiloag()の第4引数(37行目のnMonth)は月を指定しますが、1-12ではなく0-11を指定することに注意してください。

main.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"
    >
    <TextView
        android:id="@+id/date_tv"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_gravity="center"
        android:gravity="center"
        android:textSize="40sp"
        android:layout_weight="1"
        />
    <Button
        android:id="@+id/date_btn"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="日 付"
        />
</LinearLayout>

実行結果
システム設定の地域/言語が「日本語」の場合は、日付は年・月・日の並びになります。月の部分は、月の名前が入っていますので「1月」のような表示になります。「English (United States)」の場合はアメリカでの表示形式になりますので、月・日・年となり、月の省略形の「Jan」が入ります。

0 件のコメント:

コメントを投稿