java.lang.ClassCastException: ListActivity 无法转换为 DatePickerDialog

java.lang.ClassCastException: ListActivity cannot be cast to DatePickerDialog

我在实施此 Material DatePicker 时遇到问题,因为 Context 调用可能是我应该做错的。

来自 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

Process: kva.ihm, PID: 16218 java.lang.ClassCastException: kva.ihm.ParameterListActivity cannot be cast to com.wdullaer.materialdatetimepicker.date.DatePickerDialog$OnDateSetListener at kva.ihm.ParameterDetailFragment.onItemClick(ParameterDetailFragment.java:3839)

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

或者你可以使用 anonim 处理它 class:

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

愚蠢的错误。

之前@Selvin在评论中提到,实现了接口调用,因此被AndroidStudio自动导入错误关联。

提示:不要相信邪恶的汽车进口。 :)