onTimeChangedListener未触发

Bil*_*l L 2 android

我正在研究Big Nerd Ranch Android编程书.我正在研究CriminalIntent项目,我正在尝试设置DatePicker和TimePicker来设置"犯罪"的日期和时间.我的DatePicker对话框工作正常,当日期更改,一切正常更新,没有问题.

问题出现在TimePicker中.由于某种原因,onTimeChangedListener似乎没有触发,因此时间不能正确更新.我已经在我的代码中复制了将侦听器设置为TimePicker.我有一个日志声明,当我改变时间时,它永远不会触发,这就是为什么我认为这就是问题所在.

TimePicker timePicker = (TimePicker) v.findViewById(R.id.dialog_time_picker);
    timePicker.setCurrentHour(hour);
    timePicker.setCurrentMinute(minute);

    timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
        @Override
        public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
            // Get the date
            date = new GregorianCalendar(year, month, day, hourOfDay, minute).getTime();
            Log.d("TimePickerFragment", "hour: " + hourOfDay + "; minute: " + minute);

            // Save this date
            getArguments().putSerializable(EXTRA_TIME, date);
        }
    });
Run Code Online (Sandbox Code Playgroud)

以下是我设置小时和分钟的代码:

date = (Date) getArguments().getSerializable(EXTRA_TIME);

    // Create a calendar to get hour, minute, and AM/PM info
    cal = Calendar.getInstance();
    cal.setTime(date);
    int hour = cal.get(Calendar.HOUR_OF_DAY);
    int minute = cal.get(Calendar.MINUTE);
    int amPm = cal.get(Calendar.AM_PM); // 0 = AM 1 = PM
    year = cal.get(Calendar.YEAR);
    month = cal.get(Calendar.MONTH);
    day = cal.get(Calendar.DAY_OF_MONTH);
Run Code Online (Sandbox Code Playgroud)

如果您需要任何其他代码,请告诉我们

Sac*_*ise 5

在Lollipop(5.0)之前,每次更改时间时,TimePicker视图都会触发onTimeChanged事件,从而允许应用程序动态响应选择器当前指定的时间.

在棒棒糖中,Timepicker随之而来

机器人:timePickerMode = "时钟"

在时钟模式下,当时间改变时,onTimeChanged事件不会被触发.

所以最好的方法是更好的去 android:timePickerMode ="spinner"

<TimePicker
        android:id="@+id/timepick_start"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:timePickerMode="spinner"/>
Run Code Online (Sandbox Code Playgroud)