//This class based on tutorial found here https://github.com/commonsguy/cw-lunchlist/blob/master/19-Alarm/LunchList/src/apt/tutorial/TimePreference.java package com.liato.bankdroid; import android.content.Context; import android.content.res.TypedArray; import android.preference.DialogPreference; import android.util.AttributeSet; import android.view.View; import android.widget.TimePicker; import timber.log.Timber; public class TimePreference extends DialogPreference { private int lastValue = 0; private TimePicker picker = null; public TimePreference(Context ctxt, AttributeSet attrs) { super(ctxt, attrs); setPositiveButtonText("Set"); setNegativeButtonText("Cancel"); } @Override protected View onCreateDialogView() { picker = new TimePicker(getContext()); picker.setIs24HourView(true); return picker; } @Override protected void onBindDialogView(View v) { super.onBindDialogView(v); picker.setCurrentHour(lastValue / 60); picker.setCurrentMinute(lastValue % 60); } @Override protected void onDialogClosed(boolean positiveResult) { super.onDialogClosed(positiveResult); if (positiveResult) { lastValue = picker.getCurrentHour() * 60 + picker.getCurrentMinute(); if (callChangeListener(lastValue)) { persistInt(lastValue); } } } @Override protected Object onGetDefaultValue(TypedArray a, int index) { return (a.getInt(index, 0)); } @Override protected void onSetInitialValue(boolean restoreValue, Object defaultValue) { int val = 0; if (restoreValue) { val = getPersistedInt(val); } else { try { val = Integer.parseInt(defaultValue.toString()); } catch (NumberFormatException e) { Timber.e(e, "TimePreference's defaultValue is not a number"); } } lastValue = val; } }