Там есть некоторые проблемы, вы реализуете этот интерфейс TimePickerDialog.OnTimeSetListener
, который будет вызываться каждый раз, когда TimePickerDialog
закрывается, так что он всегда будет получать последний, что вы можете сделать, это удалить этот интерфейс и реализовать его себя.
TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() {
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
//Do the changes to the TextView
}
};
И вы назначаете его всякий раз, когда хотите создать TimePickerDialog
, также вы можете удалить TimePickerFragment.java
и сделать в тот же класс в данный момент, чтобы проверить, работает ли он, потому что вы Затем вам нужно будет передать его в качестве параметра.
И для 30 минут вам нужно создать CustomTimePicker
, чтобы сделать это.
public class DurationTimePickDialog extends TimePickerDialog
{
public static final int TIME_PICKER_INTERVAL = 30;
private boolean mIgnoreEvent = false;
public DurationTimePickDialog(
Context context, OnTimeSetListener callBack, int hourOfDay, int minute,
boolean is24HourView)
{
super(context, callBack, hourOfDay, minute, is24HourView);
}
@Override
public void onTimeChanged(TimePicker timePicker, int hourOfDay, int minute)
{
super.onTimeChanged(timePicker, hourOfDay, minute);
if (!mIgnoreEvent)
{
minute = getRoundedMinute(minute);
mIgnoreEvent = true;
timePicker.setCurrentMinute(minute);
mIgnoreEvent = false;
}
}
public static int getRoundedMinute(int minute)
{
if (minute % TIME_PICKER_INTERVAL != 0)
{
int minuteFloor = minute - (minute % TIME_PICKER_INTERVAL);
minute = minuteFloor + (minute == minuteFloor + 1 ? TIME_PICKER_INTERVAL : 0);
if (minute == 60)
{
minute = 0;
}
}
return minute;
}
}
С этим классом, который вы можете создать TimePickerDialog
как:
DurationTimePickDialog durationTimePickDialog = new DurationTimePickDialog(v.getContext(), mTimeSetListener,hour,min,true);
durationTimePickDialog.show();
Вы сможете принять только 30 минут, в противном случае не будет кликабельным, но ИМХО это не правильный способ сделать это, с другим widget
будет работать также.
Надеюсь, это поможет.