【问题标题】:java.lang.ClassCastException: ListActivity cannot be cast to DatePickerDialogjava.lang.ClassCastException:无法将 ListActivity 强制转换为 DatePickerDialog
【发布时间】:2015-07-14 13:08:17
【问题描述】:

由于Context 调用,我在实现此Material DatePicker 时遇到问题,我可能做错了。

来自 GitHub 的示例工作正常,因为对话框是由 Activity 创建的。

但是,在这种特殊情况下,我正在使用附加到 ListActivityFragment

我是这样称呼它的:

Calendar now = Calendar.getInstance();
DatePickerDialog dpd = DatePickerDialog.newInstance(
(DatePickerDialog.OnDateSetListener) getActivity(),
now.get(Calendar.YEAR),
now.get(Calendar.MONTH),
now.get(Calendar.DAY_OF_MONTH)
);
dpd.show(getFragmentManager(), "Datepickerdialog");

(DatePickerDialog.OnDateSetListener) getActivity() 这一行正在产生问题。在示例中它被声明为MainActivity.this,但我不能使用ListActivity.this 或类似的东西。

Logcat

进程:kva.ihm,PID:16218 java.lang.ClassCastException:kva.ihm.ParameterListActivity 不能转换为 com.wdullaer.materialdatetimepicker.date.DatePickerDialog$OnDateSetListener 在 kva.ihm.ParameterDetailFragment$49.onItemClick(ParameterDetailFragment.java:3839)

【问题讨论】:

  • java的基础:给定的类没有实现给定的接口
  • 是的,我知道,但我不熟悉这个接口的正确调用。
  • @AnirudhSharma 根本不可能打这个电话
  • 不,不是……你不会得到这个异常……尝试检查你的导入……也许你正在实现错误的接口(同名 - 不同的包)
  • 不要相信邪恶的汽车进口 :) .... 也不要叫我“先生” :)

标签: java android android-fragments android-listfragment listactivity


【解决方案1】:

您的 Activity 应该实现 DatePickerDialog.OnDateSetListener 以处理来自 DatePicker 的回调 void onDateSet(DatePickerDialog dialog, int year, int monthOfYear, int dayOfMonth);

或者你可以使用匿名类来处理它:

DatePickerDialog dialog = DatePickerDialog.newInstance(new DatePickerDialog.OnDateSetListener() {
    @Override
    void onDateSet(DatePickerDialog dialog, int year, int monthOfYear, int dayOfMonth) {
        //Your code.
    }
}, year, monthOfYear, dayOfMonth);

【讨论】:

    【解决方案2】:

    愚蠢的错误。

    正如之前在 cmets 中 @Selvin 所提到的,接口调用已实现,因此,它被 Android Studio 自动导入错误地关联了。

    提示:不要相信邪恶的自动导入。 :)

    【讨论】:

      猜你喜欢
      • 2022-07-15
      • 2017-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多