我正在使用CalendarView创建一个Xamarin应用程序。选择日期时,除1月份日期外,一切都很好。在1月份的任何一年中我的应用程序崩溃的任何日期,我得到的应用程序已经无法正常停止工作'。
我的XML代码是
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minWidth="25px"
android:minHeight="25px">
<CalendarView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/cdrCalendar"
android:maxDate="01/01/2026" />
<TextView
android:text="Medium Text"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textView1" />
</LinearLayout>
我的C#代码是
namespace BitesBoardMobile.Droid
{
class dialog_calendar : DialogFragment
{
private CalendarView _calendar;
private TextView _text;
private int _month;
private int _year;
private int _day;
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
base.OnCreateView(inflater, container, savedInstanceState);
var view = inflater.Inflate(Resource.Layout.dialog_calendar, container, false);
_calendar = view.FindViewById<CalendarView>(Resource.Id.cdrCalendar);
_text = view.FindViewById<TextView>(Resource.Id.textView1);
_calendar.DateChange += (object sender, CalendarView.DateChangeEventArgs args) =>
{
var newdate = new DateTime(args.Year, args.Month, args.DayOfMonth);
_month = newdate.Month + 1;
_year = newdate.Year;
_day = newdate.Day;
_text.Text = _year + "/" + _month + "/" + _day;
};
return view;
}
}
}
到目前为止我所做的只是获取所选日期并将其放入TextView。
他们有什么想法吗? 感谢
答案 0 :(得分:2)
查看文档:{{3}}
month int:设置为[0-11]的月份。
这意味着1月为0.但是DateTime
构造函数需要1月1。所以你必须添加一个,就像你在下面的一行一样。
_calendar.DateChange += (object sender, CalendarView.DateChangeEventArgs args) =>
{
var newdate = new DateTime(args.Year, args.Month + 1, args.DayOfMonth);
_text.Text = newdate.ToString("yyyy/MM/dd", CultureInfo.InvariantCulture);
};
答案 1 :(得分:0)
与.NET中的许多内容不同,DateTime构造函数要求它的参数是基于1而不是基于0。如果Android参数为0,则需要为它们添加1。