2016-11-11 1 views
2

einzustellen Ich mache einen Dialog. Im Initial-Zustand zeigt das DatePickerFragment das aktuelle Datum an. und ich habe dieses Datum auf mein TextView gesetzt. es funktioniert gut.Gibt es eine Möglichkeit, Date in DatePickerFragment in Android (Xamarin)

Die unten ist der Code:

DatePickerFragment Klasse

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

     } 
    } 

auf Aktivität verwenden diese Art und Weise in meinem Dialog.

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; 

und erstellen Klick-Methode wie dieses

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

Problem:

Jetzt, als ich Pickup neues Datum klicken Sie erneut auf die DatePickerFragment zeigt das aktuelle Datum nicht das vorherige ausgewählte Datum. Also gibt es eine Möglichkeit, wie ich das vorherige Datum auf DatePickerFragment setzen kann?

Jede Hilfe wird geschätzt.

Update:

enter image description here

Nach param Zugabe wird es diese Antwort geben.

+0

Ich habe getan, Dies in nativen Android kann es helfen. Sie können das vorhandene Datum richtig bekommen? – Raghavendra

+0

@Raghavendra ja ich möchte das bestehende Datum einstellen. – Ironman

+0

Nein, ich habe gefragt, ob Sie das vorhandene Datum irgendwo speichern möchten. – Raghavendra

Antwort

0

Anstelle von DatePickerFragment benutze ich DatePickerDialog mit folgendem Weg, der mein Problem lösen sollte.

Anzeige Datepicker wie auf diese Weise

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

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

und es ist Methode OnDataSet wie auf diese Weise

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

und mein schließlich selected_Date in picker gesetzt unten Art und Weise wie

ddtime.DatePicker.DateTime = selected_Date; 
Verwandte Themen