android - onTimeChangedListener 未触发

标签 android

我正在阅读 Big Nerd Ranch Android 编程书。我正在研究 CrimeIntent 项目,并尝试设置 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);
        }
    });

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

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);

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

最佳答案

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

在 Lollipop 中,Timepicker 带有

android:timePickerMode="时钟"

在时钟模式下,当时间更改时,不会触发 onTimeChanged 事件。

因此,最佳方法是使用 android:timePickerMode="spinner"

<TimePicker
        android:id="@+id/timepick_start"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:timePickerMode="spinner"/>

关于android - onTimeChangedListener 未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27749031/

相关文章:

android - 能否以编程方式为 ImageButton 生成聚焦图像?

java - 我无法从 AsyncTask 获得结果?

android - GCM - 当达到 100 条消息的限制时,来自 GCM 的特殊消息是什么样的?

android - 使用阴影层绘画 - 如何更改 alpha

Android - 将浏览器网址分享给应用

android - iOS/Android - 通过 SDK 禁用移动数据(蜂窝数据)

android - 机器人 : How to reorder a linearlayouts contents programmatically?

android - 如何获取选定联系人的电话号码?

android - Robotium 相当于 Espresso 中的 drag()?

Android Studio 1.0.2 "minifyEnabled true"使签名版本 apk 崩溃