java-无法转换为android.app.DatePickerDialog $OnDateSetListener
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-无法转换为android.app.DatePickerDialog $OnDateSetListener,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含10755字,纯文字阅读大概需要16分钟。
内容图文
![java-无法转换为android.app.DatePickerDialog $OnDateSetListener](/upload/InfoBanner/zyjiaocheng/661/20d8ede7b9b14d34af36a4db4ff8925a.jpg)
在应用程序中单击按钮时,我意外地遇到了以下错误:
cannot be cast to android.app.DatePickerDialog$OnDateSetListener
发生的情况如下-用户单击名为“ btnCalendar”的按钮,然后显示日历
btnCalendar.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
DialogP dcal = new DialogP();
dcal.show(ScheduleMatchOptionActivity.this.getFragmentManager(),"MyDialog");
}
});
下面是DialogP类
public class DialogP extends DialogFragment {
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
// Create a new instance of DatePickerDialog and return it
DatePickerDialog dialog = new DatePickerDialog(getActivity(), (OnDateSetListener) this, year, month,day);
Log.i("onCreateDialog", "onCreateDialog : MinDate() : "+new Date().getTime());
Calendar cal=new GregorianCalendar();
//min date
dialog.getDatePicker().setMinDate(cal.getTime().getTime()-1000);
Log.i("onCreateDialog", "onCreateDialog : MinDate() : "+cal.getTime());
//max date .... added 30 days from currunt date
cal.add(Calendar.DATE, 30);
Date dte =cal.getTime();
dialog.getDatePicker().setMaxDate(dte.getTime());
Log.i("onCreateDialog", "onCreateDialog : MaxDate() : "+dte);
//customizing calendar view
dialog.getDatePicker().setCalendarViewShown(true);
dialog.getDatePicker().setSpinnersShown(false);
dialog.getDatePicker().getCalendarView().setShowWeekNumber(false);
dialog.setCancelable(true);
Log.i("Date", "date : "+System.currentTimeMillis());
return dialog;
}
}
以下是日志猫消息
09-30 16:12:00.805: E/AndroidRuntime(1415): FATAL EXCEPTION: main
09-30 16:12:00.805: E/AndroidRuntime(1415): java.lang.ClassCastException: com.dooba.beta.DialogP cannot be cast to android.app.DatePickerDialog$OnDateSetListener
09-30 16:12:00.805: E/AndroidRuntime(1415): at com.dooba.beta.DialogP.onCreateDialog(DialogP.java:25)
09-30 16:12:00.805: E/AndroidRuntime(1415): at android.app.DialogFragment.getLayoutInflater(DialogFragment.java:398)
09-30 16:12:00.805: E/AndroidRuntime(1415): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:885)
09-30 16:12:00.805: E/AndroidRuntime(1415): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1057)
09-30 16:12:00.805: E/AndroidRuntime(1415): at android.app.BackStackRecord.run(BackStackRecord.java:682)
09-30 16:12:00.805: E/AndroidRuntime(1415): at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1435)
09-30 16:12:00.805: E/AndroidRuntime(1415): at android.app.FragmentManagerImpl$1.run(FragmentManager.java:441)
09-30 16:12:00.805: E/AndroidRuntime(1415): at android.os.Handler.handleCallback(Handler.java:730)
09-30 16:12:00.805: E/AndroidRuntime(1415): at android.os.Handler.dispatchMessage(Handler.java:92)
09-30 16:12:00.805: E/AndroidRuntime(1415): at android.os.Looper.loop(Looper.java:137)
09-30 16:12:00.805: E/AndroidRuntime(1415): at android.app.ActivityThread.main(ActivityThread.java:5103)
09-30 16:12:00.805: E/AndroidRuntime(1415): at java.lang.reflect.Method.invokeNative(Native Method)
09-30 16:12:00.805: E/AndroidRuntime(1415): at java.lang.reflect.Method.invoke(Method.java:525)
09-30 16:12:00.805: E/AndroidRuntime(1415): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
09-30 16:12:00.805: E/AndroidRuntime(1415): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
09-30 16:12:00.805: E/AndroidRuntime(1415): at dalvik.system.NativeStart.main(Native Method)
第25行如下:
DatePickerDialog dialog = new DatePickerDialog(getActivity(), (OnDateSetListener) this, year, month,day);
在我去之前
DatePickerDialog dialog = new DatePickerDialog(getActivity(), this, year, month,day);
但收到以下错误“未定义构造函数DatePickerDialog(Activity,DialogP,int,int,int)”,因此我将其强制转换.
我想检索另一个日期相关的问题,并将日期转换为显示给用户的名为txtDate的文本视图.我对settext很熟悉,但有点困惑.
任何帮助将不胜感激.提前致谢
更新:
cal.add(Calendar.DATE,7);
如果数字小于12,则发生以下错误:
ALL i want to do is to limit the calendar to one week
09-30 16:39:07.217: E/AndroidRuntime(2410): FATAL EXCEPTION: main
09-30 16:39:07.217: E/AndroidRuntime(2410): java.lang.NullPointerException
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.widget.CalendarView.onScroll(CalendarView.java:1214)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.widget.CalendarView.access$900(CalendarView.java:76)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.widget.CalendarView$2.onScroll(CalendarView.java:1075)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.widget.AbsListView.invokeOnItemScrollListener(AbsListView.java:1340)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.widget.ListView.layoutChildren(ListView.java:1762)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.widget.AbsListView.onLayout(AbsListView.java:2012)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.view.View.layout(View.java:14289)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.view.View.layout(View.java:14289)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.view.View.layout(View.java:14289)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.view.ViewGroup.layout(ViewGroup.java:4562)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1660)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.widget.LinearLayout.onLayout(LinearLayout.java:1436)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.view.View.layout(View.java:14289)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.view.ViewGroup.layout(ViewGroup.java:4562)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.view.View.layout(View.java:14289)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.view.ViewGroup.layout(ViewGroup.java:4562)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.view.View.layout(View.java:14289)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.view.ViewGroup.layout(ViewGroup.java:4562)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.view.View.layout(View.java:14289)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.view.ViewGroup.layout(ViewGroup.java:4562)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.view.View.layout(View.java:14289)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.view.ViewGroup.layout(ViewGroup.java:4562)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.view.View.layout(View.java:14289)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.view.ViewGroup.layout(ViewGroup.java:4562)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.view.View.layout(View.java:14289)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.view.ViewGroup.layout(ViewGroup.java:4562)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.view.View.layout(View.java:14289)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.view.ViewGroup.layout(ViewGroup.java:4562)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1730)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5481)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.view.Choreographer.doCallbacks(Choreographer.java:562)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.view.Choreographer.doFrame(Choreographer.java:532)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.os.Handler.dispatchMessage(Handler.java:92)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.os.Looper.loop(Looper.java:137)
09-30 16:39:07.217: E/AndroidRuntime(2410): at android.app.ActivityThread.main(ActivityThread.java:5103)
09-30 16:39:07.217: E/AndroidRuntime(2410): at java.lang.reflect.Method.invokeNative(Native Method)
09-30 16:39:07.217: E/AndroidRuntime(2410): at java.lang.reflect.Method.invoke(Method.java:525)
09-30 16:39:07.217: E/AndroidRuntime(2410): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
09-30 16:39:07.217: E/AndroidRuntime(2410): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
09-30 16:39:07.217: E/AndroidRuntime(2410): at dalvik.system.NativeStart.main(Native Method)
解决方法:
确保在ScheduleMatchOptionActivity活动中实现OnDateSetListener:
public class ScheduleMatchOptionActivity extends FragmentActivity
implements DatePickerDialog.OnDateSetListener {
....you code here..
}
而不是将getActivity()强制转换为OnDateSetListener,而是将其强制转换为ScheduleMatchOptionActivity,因为您正在ScheduleMatchOptionActivity中实现OnDateSetListener接口:
DatePickerDialog dialog = new DatePickerDialog(getActivity(),
(ScheduleMatchOptionActivity)getActivity(), year, month,day);
内容总结
以上是互联网集市为您收集整理的java-无法转换为android.app.DatePickerDialog $OnDateSetListener全部内容,希望文章能够帮你解决java-无法转换为android.app.DatePickerDialog $OnDateSetListener所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。