2016-04-04 11 views
0

私はCalendarViewを利用してXamarinアプリを作成しています。日付を選択するときは、1月の日付を除いてすべて正常です。 1月の任意の年の任意の日付は、私のアプリケーションがクラッシュし、私は 'アプリケーションが予想外にstoppped働いている'取得します。calendaerデート日付を選択すると、デート日付がクラッシュするアプリケーション

私の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#のコードは、私がこれまでにやっているすべてはちょうど選択した日付を取得し、TextViewの中でそれを入れている

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

です。

ここにはどのようなアイデアがありますか? おかげ

答えて

2

は、ドキュメントを見てください:http://developer.android.com/reference/android/widget/CalendarView.OnDateChangeListener.html

月のINT:設定された月[0-11]。

これは1月が0であることを意味しますが、DateTimeコンストラクタは1月に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); 
}; 
0

は、.NETでの多くのものとは異なり、DateTimeコンストラクタは、引数は基づいていない0、ベースの1であることを期待しています。 Androidの引数が0の場合は、それらに1を追加する必要があります。

関連する問題