Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么此日历视图为空(不显示任何内容)?_Java_Android_Datetime_Calendar_Jodatime - Fatal编程技术网

Java 为什么此日历视图为空(不显示任何内容)?

Java 为什么此日历视图为空(不显示任何内容)?,java,android,datetime,calendar,jodatime,Java,Android,Datetime,Calendar,Jodatime,我正在开发一个叫做无限日历的应用程序。它不是无限的,因为每件事都有一个极限,我现在发现这个极限。我正在使用日历视图来显示日历和JodaTime,以帮助我处理日期 我的布局只有一个视图: <CalendarView android:layout_width="match_parent" android:layout_height="match_parent" android:showWeekNumber="false" android:shownWeekCou

我正在开发一个叫做无限日历的应用程序。它不是无限的,因为每件事都有一个极限,我现在发现这个极限。我正在使用
日历视图
来显示日历和JodaTime,以帮助我处理日期

我的布局只有一个视图:

<CalendarView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:showWeekNumber="false"
    android:shownWeekCount="5"
    android:id="@+id/calendar">
</CalendarView>
为什么我要使用
9223372017014400000L
?因为经过一些实验,我发现这是JodaTime能得到的最大值。为什么我没有在布局文件中设置它们?因为我不知道格式。我以前试过几次,但它不断抛出异常,说最大值小于最小值

现在我想,到目前为止还不错。因此,我尝试将日期设置为一些非常大的数字:

Date date = new LocalDate (2000000, 1, 1).toDate ();
calendar.setDate (date.getTime ());
事实上,我甚至不知道我是否做得很好,或者我只是在屠杀它

现在奇怪的事情发生了。当我运行应用程序时,
日历视图
只在顶部显示月份、年份和星期几!我搜索并发现了另一个类似的问题:

但是答案告诉OP将维度设置为
match\u parent
,我显然这样做了

问题来了,这有什么特殊原因吗?如果是,它是什么?我如何修复它?如果否,
日历视图的限制是什么

更新:

我尝试将最小日期设置为默认值(未指定该值),将最大日期设置为1/1/2000000,然后将日期设置为1/12000000。现在,日历视图显示了1999999年的日期和其他日期!真奇怪


乔恩·斯基特,请帮帮我

从我手机上谷歌自己的日历应用判断,该应用只适用于2038年,我想他们的
CalendarView
也会遇到类似的问题。这可能是它支持的最长日期,尽管我在文档中找不到任何提及这一点的内容

您最好研究其他解决方案或编写自己的解决方案,使用64位时间表示法-这应该涵盖您大约3000亿年的时间



旁白:JodaTime使用64位表示时间,因此要获得最大值,只需将63个连续的1转换为十进制即可
9223372036854775807
。无需进行任何实验,结果略高于您的结果。

请参阅更新。我尝试了其他方法,日历上显示的日期是2000000年不,因为我仍然不明白为什么2000000年是可以的,但292278993年不是。你在更新中没有提到这一点。你所说的是它在2000000年起了作用,老实说,我对它能应付这一点印象深刻。我认为您必须接受,在使用CalendarView时会有一些限制。你不应该指望它能在3亿年内发挥作用。
Date date = new LocalDate (2000000, 1, 1).toDate ();
calendar.setDate (date.getTime ());