【发布时间】:2020-03-12 18:55:34
【问题描述】:
我有以下日期选择器对话框片段,它工作得很好,并将编辑文本中的日期设置为日期选择器中选择的日期。如果edittext不为空,我需要做的是将日期选择器中的日期设置为edittext中的日期。我的对话片段是:
public class DatePickerFragment : Android.Support.V4.App.DialogFragment, DatePickerDialog.IOnDateSetListener
{
// TAG can be any string of your choice.
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)
{
// Note: monthOfYear is a value between 0 and 11, not 1 and 12!
DateTime selectedDate = new DateTime(year, monthOfYear + 1, dayOfMonth);
Log.Debug(TAG, selectedDate.ToLongDateString());
_dateSelectedHandler(selectedDate);
}
}
我在点击编辑文本时调用片段,代码是:
dob.Click += (sender, e) =>
{
DatePickerFragment frag = DatePickerFragment.NewInstance(delegate (DateTime time)
{
string thedate = time.ToShortDateString();
if (Utils.Mid(thedate,2,1) == "/")
{
thedate = "0" + thedate;
}
dob.Text = thedate;
});
frag.Show(SupportFragmentManager, DatePickerFragment.TAG);
};
我尝试了几种我在 stackoverflow 上看到的方法,但都没有奏效。
【问题讨论】:
标签: c# android xamarin.android datepicker