Androidアプリ入門 No.29 TimePickerDialog
TimePickerDialog
TimePickerDialogの基本
日付に続いて、時刻の選択ダイアログを確認する。まずはmain.xmlを以下のようにする。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="26sp" android:text="" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="26sp" android:text="時刻を選択" /> </LinearLayout>
続いて、MainActivity.javaを以下のようにする。
package sample.at; import java.util.Calendar; import android.app.Activity; import android.app.Dialog; import android.app.TimePickerDialog; import android.app.TimePickerDialog.OnTimeSetListener; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import android.widget.TimePicker; public class MainActivity extends Activity { private TextView textView; private Button button; private int hour; private int minute; private static final int TIME_DIALOG_ID = 0; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); textView = (TextView) findViewById(R.id.textView); button = (Button) findViewById(R.id.button); button.setOnClickListener(new OnClickListener() { public void onClick(View v) { showDialog(TIME_DIALOG_ID); } }); Calendar c = Calendar.getInstance(); hour = c.get(Calendar.HOUR_OF_DAY); minute = c.get(Calendar.MINUTE); updateDisplay(); } private void updateDisplay() { textView.setText(new StringBuilder().append(hour).append("時").append(minute) .append("分")); } @Override protected Dialog onCreateDialog(int id) { switch (id) { case TIME_DIALOG_ID: return new TimePickerDialog(this, timeSetListener, hour, minute, true); } return null; } private OnTimeSetListener timeSetListener = new OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int selectMinute) { hour = hourOfDay; minute = selectMinute; updateDisplay(); } }; }
TimePickerDialogのコンストラクタは以下となる。
public TimePickerDialog (Context context, TimePickerDialog.OnTimeSetListener callBack, int hourOfDay, int minute, boolean is24HourView);
引数は以下。
引数 | 説明 |
---|---|
context | 親のコンテキスト。 |
callBack | 時刻を設定したことを通知するリスナー。 |
hourOfDay | ダイアログの時間の初期値。 |
minute | ダイアログの分の初期値。 |
is24HourView | 時刻を24時間表記にするか。trueは24時間表記。falseは午前、午後を選択する形となる。 |
表示したダイアログを選択した場合、上記のとおりOnTimeSetListenerでイベントを受け取る。ダイアログで「設定」ボタンが押された時にはOnTimeSetListenerのonTimeSetメソッドが呼び出される。メソッドの定義は以下の通り。
public abstract void onTimeSet (TimePicker view, int hourOfDay, int minute);
引数は以下。
引数 | 説明 |
---|---|
view | ダイアログのView |
hourOfDay | ダイアログで設定された時間。 |
minute | ダイアログで設定された分。 |