/ / calendaerView seleccionando una aplicación de bloqueo de fecha de junio - c #, xamarin, visual-studio-2015, calendarview

calendaerView seleccionando una aplicación de accidentes de fecha junary - c #, xamarin, visual-studio-2015, calendarview

Estoy creando una aplicación Xamarin utilizando elCalendarView. Al seleccionar una fecha, todo está bien, EXCEPTO para una fecha de enero. En cualquier fecha de cualquier año del mes de enero, mi aplicación falla y aparece "La aplicación ha dejado de funcionar de manera inesperada".

Mi código XML es

<?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>

Mi código C # es

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;
}
}
}

Todo lo que estoy haciendo hasta ahora es obtener la fecha seleccionada y ponerla en TextView.

¿Hay alguna idea por ahí? Gracias

Respuestas

2 para la respuesta № 1

Echa un vistazo a la documentación: http://developer.android.com/reference/android/widget/CalendarView.OnDateChangeListener.html

mes int: El mes que se configuró [0-11].

Esto significa que enero es 0. Pero el DateTime El constructor necesita 1 para enero. Por lo tanto, debe agregar uno, como lo hizo con una línea a continuación.

_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);
};

0 para la respuesta № 2

A diferencia de muchas cosas en .NET, el Fecha y hora el constructor espera que sus argumentos estén basados ​​en 1, no en 0. Si los argumentos de Android están basados ​​en 0, deberá agregar 1 a ellos.