TimePickerDialogの表示

TimePickerDialogを使ってみたので、とりあえずメモ。

private int setHour;

private int setMinutes;

/**
 * タイマー設定ボタンのClickイベントハンドラ
 * @param view
 */
public void timerSettingButtonOnClick(View view) {
	TimePickerDialog tpDialog = new TimePickerDialog(this, timeSetListener, 0, 0, true);
	tpDialog.show();
}

/**
 * TimePickerDialogのコールバック
 * 
 */
private TimePickerDialog.OnTimeSetListener timeSetListener = new TimePickerDialog.OnTimeSetListener() {
	@Override
	public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
		setHour = hourOfDay;
		setMinutes = minute;
		TextView text = (TextView) findViewById(R.id.setTimeTextView);
		text.setText(setZeroPad(hourOfDay) + ":" + setZeroPad(minute));
	}
};


メイン画面のボタンをクリック時の処理でTimePickerDialogを生成します。
TimePickerDialogの引数は

//(コンテキスト, コールバック, 初期の設定時間, 初期の設定分, 24時間表示)
TimePickerDialog tpDialog = new TimePickerDialog(this, timeSetListener, 0, 0, true);

といった感じ。
第5引数をtrueにすると、Dialog内に「AM(PM)」ボタンが増えます。
インスタンスを生成したらtpDialog.show();で表示します。

それからコールバックを呼ぶ必要があるので、
TimePickerDialog.OnTimeSetListenerインターフェースが用意されているのでそれを使用。

private TimePickerDialog.OnTimeSetListener timeSetListener = new TimePickerDialog.OnTimeSetListener() {
	@Override
	public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
        }
}

TimePickerDialog.OnTimeSetListenerを記述すると自動でonTimeSetが補完されます。
その引数のhourOfDayとminuteは、それぞれ画面で設定した時間と分になります。
onTimeSetメソッドはTimePickerDialogの設定ボタンをクリックしたときに処理されるので、
メイン画面に、設定した時間を表示してみました。


24時間表示trueの場合のTimePickerDialog↓

24時間表示trueの場合のTimePickerDialog↓