android.app.TimePickerDialog を、DialogFragmentで表示する。
方法は2通り
(1)DialogFragment を new 演算子で直接記述する方法
(2)DialogFragment を 継承した抽象クラス
(1) はとても簡単
new DialogFragment(){
@Override
public Dialog onCreateDialog(Bundle _savedInstanceState){
Calendar cal = Calendar.getInstance();
return new TimePickerDialog(getActivity(), new TimePickerDialog.OnTimeSetListener(){
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute){
//
// 任意の処理
//
}
}, cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), true
);
}
}.show(getFragmentManager(), "timepicker");
(2) は、頻繁に記述がある場合に少しコード量が減るだけで期待するほどでもない。
import java.util.Calendar;
import android.app.Dialog;
import android.app.DialogFragment;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.widget.TimePicker;
/**
* TimePickerDialogFragment
*/
public abstract class TimePickerDialogFragment extends DialogFragment{
protected abstract void onTimeSet(int hourOfDay, int minute);
@Override
public Dialog onCreateDialog(Bundle savedInstanceState){
Calendar cal = Calendar.getInstance();
return new TimePickerDialog(getActivity(), new TimePickerDialog.OnTimeSetListener(){
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute){
TimePickerDialogFragment.this.onTimeSet(hourOfDay,minute);
}
}, cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), true
);
}
}
で実行は、、
new TimePickerDialogFragment(){
@Override
protected void onTimeSet(int hourOfDay, int minute){
//
// 任意の処理
//
}
}.show(getFragmentManager(), "progress");
いずれも、ダイアログの表示は、、、