2016-11-11 15 views
2

私は1つのダイアログを作っています。初期状態では、DatePickerFragmentに現在の日付が表示されます。その日付をTextViewに設定しました。それは正常に動作しています。アクティビティ使用上のAndroid(Xamarin)のDatePickerFragmentに日付を設定する方法はありますか

DatePickerFragmentクラス

public class DatePickerFragment : DialogFragment, 
            DatePickerDialog.IOnDateSetListener 
    { 
     public static readonly string TAG = "X:" + typeof(DatePickerFragment).Name.ToUpper(); 

     // Initialize this value to prevent NullReferenceExceptions. 
     Action<DateTime> _dateSelectedHandler = delegate { }; 

     public static DatePickerFragment NewInstance(Action<DateTime> onDateSelected) 
     { 
      DatePickerFragment frag = new DatePickerFragment(); 
      frag._dateSelectedHandler = onDateSelected; 

      return frag; 
     } 

     public override Dialog OnCreateDialog(Bundle savedInstanceState) 
     { 
      DateTime currently = DateTime.Now; 
      DatePickerDialog dialog = new DatePickerDialog(Activity, 
                  this, 
                  currently.Year, 
                  currently.Month - 1, 
                  currently.Day); 
      return dialog; 
     } 

     public void OnDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) 
     { 
      DateTime selectedDate = new DateTime(year, monthOfYear + 1, dayOfMonth); 

      _dateSelectedHandler(selectedDate); 

     } 
    } 

こうして私のダイアログ内側:

以下のコードです。

txt_selectDate = dialog.FindViewById<TextView>(Resource.Id.txt_selectDate); 
         DateTime cuurently = DateTime.Now; 
         txt_selectDate.Text = cuurently.ToString("dd/MM/yyyy",CultureInfo.InvariantCulture); 
         dialog.Show(); 

         var select_date = dialog.FindViewById<ImageView>(Resource.Id.select_date); 
         select_date.Click += SelectDate_Click; 

この

void SelectDate_Click(object sender, EventArgs e) 
      { 
       DatePickerFragment frag = DatePickerFragment.NewInstance(delegate (DateTime time) 
        { 
         var pickupDate = time.ToString("yyyy-MM-dd'T'HH:mm:ss'Z'", CultureInfo.InvariantCulture); 
         txt_selectDate.Text = time.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture); 

        }); 

       frag.Show(context.FragmentManager, DatePickerFragment.TAG); 
      } 

問題のようにクリックメソッドを作成します。今

私は再びDatePickerFragmentが現在の日付ではない以前選択した日付を示しピックアップ新しい日付にクリックしてください。以前の日付をDatePickerFragmentに設定する方法はありますか?

ご了承ください。

更新:

enter image description here

のparamを追加した後、この応答が得られます。

+0

のような日付ピッカーに設定されている私が行っているような

表示日付ピッカーネイティブのアンドロイドでこれが助けになるかもしれません。既存の日付を正しく取得できますか? – Raghavendra

+0

@Raghavendraはい既存の日付を設定したいと思います。 – Ironman

+0

いいえどこにも既存の日付を保存していますか? – Raghavendra

答えて

0

DatePickerFragmentの代わりに、DatePickerDialogを使用して、私の問題を解決しました。このよう

ddtime = new DatePickerDialog(context, OnDateSet, DateTime.Today.Year, DateTime.Today.Month - 1, 
                DateTime.Today.Day 
                  ); 

          ddtime.DatePicker.DateTime = selected_Date; 
          ddtime.SetTitle(""); 
          ddtime.Show(); 

、それはこのよう

async void OnDateSet(object sender, DatePickerDialog.DateSetEventArgs e) 
      { 
       default_date = e.Date.Year + "/" + e.Date.Month + "/" + e.Date.Day; 
       txt_selectDate.Text = e.Date.Day + "/" + e.Date.Month + "/" + e.Date.Year; 
       selected_Date = e.Date; 
      } 

のような方法OnDataSetだし、最終的に私のselected_Dateは、以下の方法

ddtime.DatePicker.DateTime = selected_Date; 
関連する問題