libro
www.tuyano.com
Google androidプログラミング入門

さまざまなGUI部品を使ってみよう! (6/7)

作成:2010-06-17 17:01
更新:2010-06-17 17:03

■DatePickerDialogによる日付ダイアログ

日付の入力というのは、独特です。正しくフォーマットされた形で入力されないといけないからです。普通の入力フィールドだと、正しい値かどうかチェックするなど考えなければいけません。

そこでAndroidでは、日付を入力するための専用ダイアログというのを用意しています。これを利用することで、簡単に日付を入力することができます。下に簡単なサンプルをあげておきましょう。アプリケーションを起動すると、画面に日付ダイアログが現れます。ここで適当に日付を選び、「Set」ボタンを押すと、「日付:〇〇年○○月○○日」という具合に日付が表示されます。(※ここでは、android:id="@+id/text"という形でTextViewが用意されているものとして作ってあります)

※DatePickerDialogの作成

日付ダイアログは、「DatePickerDialog」というクラスとして用意されています。これは、以下のような形でインスタンスを作成します。
new DatePickerDialog( [Context], [DatePickerDialog.OnDateSetListener],
    年の値, 月の値, 日の値 )
第1引数は、このダイアログが表示される親となるものを指定します。これは通常、thisを指定すればいいでしょう。第2引数には、日付を設定した時のイベント処理をするためのイベントリスナーを指定します。そして第3~5引数は、デフォルト時の年月日の値を指定します。注意したいのは「月」の値で、これは0~11の整数値となります(つまり、1月はゼロ)。

こうしてインスタンスを作成し、「show」というメソッドを呼び出せば、画面にダイアログがあらわれるというわけです。後は、日付を設定してセットすると、第2引数で指定しておいたイベントリスナーが呼び出されるので、ここで日付の処理をすればいいわけです。

※DatePickerDialog.OnDateSetListenerの作成

では、イベント処理をするDatePickerDialog.OnDateSetListenerは、どのようにして作成するのでしょうか。これはだいたい以下のようになります。
new DatePickerDialog.OnDateSetListener(){
    @Override
    public void onDateSet(DatePicker view, int y, int m, int d) {
        ……設定時の処理……
    }
};
DatePickerDialog.OnDateSetListenerは、「onDateSet」というメソッドを1つ持っています。ここで、日付設定時の処理を行います。このメソッドでは、引数にイベントが発生したDatePickerインスタンス、設定された年月日の値がそれぞれ引渡されます。

ここでは無名クラスとしてインスタンスを作り、メソッドを設定していますが、もちろん他にimplementsしたクラスを用意してもかまいません。そのへんはそれぞれの書きやすいやり方でOKです。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

package jp.tuyano;

import android.app.*;
import android.os.Bundle;
import android.widget.*;

public class SampleApp extends Activity {
	private TextView text1;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		text1 = (TextView)this.findViewById(R.id.text);
		
		DatePickerDialog.OnDateSetListener listener =
			new DatePickerDialog.OnDateSetListener(){
			@Override
			public void onDateSet(DatePicker view, int y, int m, int d) {
				text1.setText("日付:" + y + "年" + (m + 1) + "月" + d + "日");
			}
		};
		DatePickerDialog datePicker =
			new DatePickerDialog(this,listener,2010,0,1);
		datePicker.show();
	}
}

※関連コンテンツ

「Google androidプログラミング入門」に戻る