当前位置: 首页 > 知识库问答 >
问题:

Lollipop CalenderView DatePicker不调用OnDateChanged()方法

南门正业
2023-03-14

我正在使用一个DatePicker,发现在Android5.0下,当它处于CalendarView模式时,即使选择了新的日期,它也不会在其OnDateChangedListener中调用OnDateChanged()方法。如果在DatePicker的xml标记中设置了android:datePickermode=“spinner”,则DatePicker将显示为旋转器,并且在选择新日期时将调用OnDateChanged()。在Android的早期版本中,当在CalendarView和Spinners版本中都选择了新日期时,DatePicker会调用OnDateChanged()。下面是相关代码:

@SuppressLint("InflateParams")
View v = getActivity().getLayoutInflater().inflate(R.layout.dialog_date, null);

 DatePicker datePicker = (DatePicker) v.findViewById(R.id.dialog_date_DatePicker);
 datePicker.init(year, month, day, new DatePicker.OnDateChangedListener() {
       @Override
       public void onDateChanged(DatePicker view, int year, int month, int day) {
           //Translate year, month, day into a Date object using a calendar
           mDate = new GregorianCalendar(year, month, day).getTime();
           //Update argument to preserve selected value on rotation
           getArguments().putSerializable(EXTRA_DATE, mDate);
       }
  });

在我的应用程序中,如果DatePicker处于Lollipop下的CalendarView模式,则不会调用onDateChanged(),也不会更改mDate;但是如果DatePicker处于Spinners模式,则会调用onDateChanged(),并更改mDate。在Android的早期版本中,在DatePicker的两个版本中都调用OnDateChanged()并更改mDate。

是否有任何方法可以在5.0中获得CalendarView DatePicker来调用OnDateChanged()?否则,当DatePicker处于CalendarView模式时,我还如何从它检索更改的日期?

共有1个答案

萧飞
2023-03-14

我也面临同样的问题,问题是在带有lollipop更新的Nexus设备中没有调用DatePicker和TimePicker的onDateChange()和onTimeSet()监听器。

原因是在nexus设备中,由于时钟应用程序更新,监听器无法工作。

解决的方法是,一旦对话框被取消,您需要创建自己的侦听器,使用datepicker get()方法设置日历对象中的值,并将日历传递给侦听器。

/**
 * Returns the calendar instance once the date and time is set.
 * @return
 */
public Calendar getDateTime() {
    mCalendar.set(datePicker.getYear(),
                  datePicker.getMonth(),
                  datePicker.getDayOfMonth(),
                  timePicker.getCurrentHour(),
                  timePicker.getCurrentMinute());
    return mCalendar;
}
 类似资料:
  • 问题内容: 我正在尝试使用自定义方案从网页打开我的应用程序。该应用已打开,但未调用以下方法: 我的样子如下: 该项目是使用Xcode 11.1创建的,我正在iOS 13上进行测试。 问题答案: 在您的场景委托中实施。 如果该网址启动了您的应用,则您将获得该网址,它位于中。

  • 问题内容: 在一个活动中,我有一个datePicker(旋转器),它允许用户选择他们的出生日期,在此之下,用户还必须选择他们的性别。我有一个按钮,一旦设置了两个值(日期和性别),就会启用该按钮。尽管首先更改了值,但我现在面临的问题是启用该按钮。当前,用户必须选择其出生日期,然后选择其性别,才能激活该按钮。我希望无论首先更改哪个值都可以启用该按钮。 这是我的代码: 问题答案: 您的代码很少有问题。

  • 我不明白我做错了什么。我想使用JAXB解封一个xml,但是我注意到没有调用setter方法。我使用Java1.5。Attribute.java类中的Getters和Setters正常工作,但在Configuration.javaclass-Setter方法不调用。你能告诉我我错在哪里吗? 我的XML如下所示:

  • 在下面的代码中编辑Player类,以便代码给出预期的输出。不要只打印预期的输出。不要编辑比赛类。不允许在Player类中添加任何变量。只添加必要的方法。您的代码会给出与预期输出完全相同的输出吗?解释原因。

  • 基本上,我有一个接口形状,它具有和方法。绘制形状的每个类都实现了这一点。还有一个类包含这些形状类的。然后有一个单独的类包含我的JFrame。我有一个“动画”按钮,它调用中的所有方法。

  • 对于我的程序,我目前希望使用open按钮打开JFileChooser并选择一个图像,然后在applet左侧的JPanel上绘制它,我知道该文件正在被检索,但当我重新绘制图形上下文时,什么也没有发生。提前谢了。