I am using this library to use custom time picker in my app. The relevant code from the TimePickerDialog class is as follows:
public static TimePickerDialog newInstance(OnTimeSetListener callback,
int hourOfDay, int minute, boolean is24HourMode) {
TimePickerDialog ret = new TimePickerDialog();
ret.initialize(callback, hourOfDay, minute, is24HourMode);
return ret;
}
In my activity I have used this code to implement that:
com.android.datetimepicker.time.TimePickerDialog dialog = new com.android.datetimepicker.time.TimePickerDialog();
dialog.newInstance((OnTimeSetListener) mTimeSetListener, getHour, getMinute, true);
FragmentManager fragmentManager;
fragmentManager = getSupportFragmentManager();
dialog.show(fragmentManager, "timepicker");
But when I launch the app, I get a force close with following error:
01-10 11:08:29.781 8727-8727/com.example.unplugged E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.ClassCastException: com.example.unplugged.MainActivity$1 cannot be cast to com.android.datetimepicker.time.TimePickerDialog$OnTimeSetListener
at com.example.unplugged.MainActivity.onClick(MainActivity.java:48)
at android.view.View.performClick(View.java:4249)
at android.view.View$PerformClick.run(View.java:17764)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5162)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:756)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:572)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132)
at dalvik.system.NativeStart.main(Native Method)
Any suggestions?
Edit: The call back method:
private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener()
{
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
setHour = hourOfDay;
setMinute = minute;
}
};
You must be using android.app.TimePickerDialog.OnTimeSetListener
Change
dialog.newInstance((OnTimeSetListener) mTimeSetListener, getHour, getMinute, true);
to
dialog.newInstance(new com.android.datetimepicker.time.TimePickerDialog.OnTimeSetListener()
{
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
setHour = hourOfDay;
setMinute = minute;
}
}, getHour, getMinute, true);