TimePickerDialogで時刻選択する


時刻入力ダイアログのTimePickerDialogの紹介です。
名前からも分かるとおり、時刻入力に特化したダイアログで、以前紹介したDatePickerDialogで日付選択すると同様に、簡単に使うことが出来ます。標準のダイアログを使うと省力化でき、多言語対応も楽になります。
(今回のTimePickerDialogでも、ユーザーの言語設定に合った画面構成を作成してくれます)

また、TimePickerDialogとDatePickerDialogはAlertDialogを継承しているため、
AlertDialogで警告画面を表示する(1)で紹介したメソッドも利用可能です。

続きはソースコードの解説・サンプルです。

1
2
//時刻設定ダイアログの作成
timePickerDialog = new TimePickerDialog(this, TimeSetListener, hourOfDay, minute, true);

リスナーの登録

時刻入力完了を受け取るために、TimePickerDialog.OnTimeSetListenerを作成します。TimePickerDialogのインスタンス生成時にリスナー登録を行います。

1
2
3
4
5
6
7
8
9
10
TimePickerDialog timePickerDialog;
 
//時刻設定時のリスナ登録
TimePickerDialog.OnTimeSetListener TimeSetListener = new TimePickerDialog.OnTimeSetListener() {
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
 
        //ログ出力
        Log.d("TimePicker","hourOfDay:" + hourOfDay + " minute:" + minute);
    }
};

今回もリスナはログ出力のみです。必要に応じて、選択された時刻情報をメンバ変数に保存してください。

時刻選択ダイアログの表示

初期値に現在時刻を設定しました。初期値は自由に変更することが可能です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
 
    //日付情報の初期設定
    Calendar calendar   = Calendar.getInstance();
 
    int hourOfDay = calendar.get(Calendar.HOUR_OF_DAY);
    int minute    = calendar.get(Calendar.MINUTE);
 
    //時刻設定ダイアログの作成
    timePickerDialog = new TimePickerDialog(this, TimeSetListener, hourOfDay, minute, true);
 
    //時刻設定ダイアログの表示
    timePickerDialog.show();
}

サンプルではTimePickerDialogのインスタンス生成時、第5引数をtrueとしています。
falseに変更すると下画像のように、12時間表記+午前/午後(言語設定によってはAM/PM)と
時刻表記を変更することが出来ます。

テーマの変更

TimePickerDialogも、DatePickerDialogと同様にテーマを変更することが出来ます。
もちろん、手順はDatePickerDialogと一緒ですので利用の際は日付選択ダイアログも確認してみてください。

1
2
     TimePickerDialog(Context context, TimePickerDialog.OnTimeSetListener callBack, int hourOfDay, int minute, boolean is24HourView)
TimePickerDialog(Context context, int theme, TimePickerDialog.OnTimeSetListener callBack, int hourOfDay, int minute, boolean is24HourView)

第1引数から、コンテキスト、リスナ、時刻、分、24時間表記フラグです。
テーマを使う場合は、第2引数にint themeが追加されたコンストラクタを利用してください。

2 Comments