Android Lollipop DatePicker 无法正常工作

标签 android datepicker

我在 5.0 下运行我的应用程序并且工作正常,但是当我在 5.0+ 设备上运行时监听器不会验证。

  DatePicker.OnDateChangedListener listener = new DatePicker.OnDateChangedListener() {
            @Override
            public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {

                Date current = new Date(year, monthOfYear, dayOfMonth);

                if (current.getTime() < minDate.getTime()) {
                    view.updateDate(minDate.getYear(), minDate.getMonth(), minDate.getDate());
                }
            }
        };

最佳答案

我在几台运行高于 Honeycomb 版本的 Samsung 和 Nexus 设备上看到过这种情况,其中 onDateSet/onDateChanged 没有被调用(或者甚至被多次调用)。作为解决方法,手动设置积极操作的点击监听器以触发您想要的方法效果很好。

例如,假设您有 DatePickerDialog dateDialog:

if(android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.HONEYCOMB){ // Fix for some Samsung/Nexus devices not explicitly calling onDateSet
    dateDialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK", new DialogInterface.OnClickListener(){
        public void onClick(DialogInterface dialog, int which) {
            DatePicker datePicker = dateDialog.getDatePicker();
            listener.onDateChanged(datePicker, datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth());
        } 
    });     
}

您可能还想在 onDateChanged() 方法中添加一个检查,以确保在处理日期更改时实际显示日期选择器对话框,以防止在某些设备上调用它两次。例如

public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
    if(!view.isShown()) return;

    // Safe to handle the date
}

关于Android Lollipop DatePicker 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31811932/

相关文章:

Android 如何获得设备中的总内存 RAM?

android - Systrace 输出不显示图形/surfaceflinger 事件

android - 如何从另一个线程(Android 处理程序)在 ImageView 中显示位图

javascript - 更改日期变量的时区

javascript - 为 Jquery UI 日期选择器指定冬季日期范围

android - 使用 scrollTo ListView 时不刷新,手动滚动时刷新

java - Android 从应用程序 A 向应用程序 B 发送通知

javascript - 如何使用 jquery 检查日期不能小于当前日期?

Jquery Datepicker CSS 在模态内部不起作用

android - 在 xml 中并排显示 DatePicker 和 TimePicker