2016-11-11 66 views
2

我在做一個對話框。在初始狀態下,DatePickerFragment顯示當前日期。並將該日期設置爲我的TextView。它工作正常。有沒有什麼辦法在Android中設置DatePickerFragment中的Date(Xamarin)

下面是代碼:在活動中使用

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

我已經做了這在原生的android可能會有所幫助。你可以得到現有的日期嗎? – Raghavendra

+0

@Raghavendra是的我想設置現有的日期。 – Ironman

+0

不,我問你是否在任何地方保存現有的日期? – Raghavendra

回答

0

而不是使用DatePickerFragment我用DatePickerDialog以下面的方式解決了我的問題。

顯示的DatePicker像這樣

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

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

和它的方法OnDataSet像這樣

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

最後我selected_Date在日期選擇器設置像下面這樣

ddtime.DatePicker.DateTime = selected_Date; 
相關問題