如何在Android Xamarin中的日期选择器中隐藏以前的日期
我正在使用此代码,但OnDateChanged方法未被调用。为什么,我在哪里出错?请帮助我如何在Android Xamarin中的日期选择器中隐藏以前的日期,android,xamarin,xamarin.android,xamarin.forms,xamarin-studio,Android,Xamarin,Xamarin.android,Xamarin.forms,Xamarin Studio,我正在使用此代码,但OnDateChanged方法未被调用。为什么,我在哪里出错?请帮助我 public class DatePickerFragment : DialogFragment, DatePickerDialog.IOnDateSetListener,DatePicker.IOnDateChangedListener { // TAG can be any string of your choice. public stat
public class DatePickerFragment : DialogFragment,
DatePickerDialog.IOnDateSetListener,DatePicker.IOnDateChangedListener
{
// 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 { };
DateTime currently = DateTime.Now;
public static DatePickerFragment NewInstance(Action<DateTime> onDateSelected)
{
DatePickerFragment frag = new DatePickerFragment();
frag._dateSelectedHandler = onDateSelected;
return frag;
}
public override Dialog OnCreateDialog(Bundle savedInstanceState)
{
DatePickerDialog dialog = new DatePickerDialog(Activity,
this,
currently.Year,
currently.Month,
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);
_dateSelectedHandler(selectedDate);
}
public void OnDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth)
{
if (year < currently.Year)
view.UpdateDate(currently.Year, currently.Month, currently.Day);
if(monthOfYear < currently.Month && monthOfYear == currently.Year)
view.UpdateDate(currently.Year, currently.Month, currently.Day);
if(dayOfMonth< currently.Day && year == currently.Year &&monthOfYear == currently.Month)
view.UpdateDate(currently.Year, currently.Month, currently.Day);
}
公共类DatePickerFragment:DialogFragment,
DatePickerDialog.IOnDateSetListener,DatePicker.IOnDateChangedListener
{
//标记可以是您选择的任何字符串。
公共静态只读字符串TAG=“X:”+typeof(DatePickerFragment).Name.ToUpper();
//初始化此值以防止NullReferenceException。
动作_dateSelectedHandler=委托{};
DateTime当前=DateTime.Now;
公共静态DatePickerFragment NewInstance(操作onDateSelected)
{
DatePickerFragment frag=新的DatePickerFragment();
frag.\u dateSelectedHandler=onDateSelected;
返回碎片;
}
创建对话框上的公共覆盖对话框(Bundle savedInstanceState)
{
DatePickerDialog对话框=新建DatePickerDialog(活动,
这
目前,今年,,
目前,月份,,
当前(天);
返回对话框;
}
公共void OnDateSet(日期选择器视图,整数年,整数月,整数月)
{
//注意:monthOfYear是介于0和11之间的值,而不是介于1和12之间的值!
DateTime selectedDate=新的日期时间(年、月+1、月天数);
_dateSelectedHandler(selectedDate);
}
公共无效OnDateChanged(日期选择器视图,整数年,整数月,整数月)
{
如果(年份<当前年份)
view.UpdateDate(当前.Year,当前.Month,当前.Day);
if(monthOfYear<当前.Month&&monthOfYear==当前.Year)
view.UpdateDate(当前.Year,当前.Month,当前.Day);
如果(dayOfMonth我试图从日期选择器禁用以前的日期,但日期更改侦听器未调用。我想对datepicker隐藏过去的日期。请您帮助我如何做到这一点。由于DatePickerDialog是datepicker的包装,因此在这种情况下,实际的datepicker小部件没有将
OnDateChanged
设置为其侦听器,因此不会被调用
要禁用DatePicker中的日期,只需设置其MinDate或MaxDate属性。因此,如果您试图禁用当前日期之前的日期,请在OnCreateDialog
中设置MinDate:
dialog.DatePicker.MinDate = Java.Lang.JavaSystem.CurrentTimeMillis();
您需要使用
Java.Lang.JavaSystem.CurrentTimeMillis()
因为您需要提供日期,因为DatePickerDialog是日期选择器的包装器,所以在本例中,实际的日期选择器小部件没有将OnDateChanged
设置为其侦听器,因此不会被调用
要禁用DatePicker中的日期,只需设置其MinDate或MaxDate属性。因此,如果您试图禁用当前日期之前的日期,请在OnCreateDialog
中设置MinDate:
dialog.DatePicker.MinDate = Java.Lang.JavaSystem.CurrentTimeMillis();
您需要使用
Java.Lang.JavaSystem.CurrentTimeMillis()代码>因为您需要提供日期我用上面提到的代码修改了Xamarin DatePicker示例。您能否运行此项目以查看是否仍然存在相同的问题?你在测试什么Android版本?它只在那个版本上发生吗?谢谢你用示例代码重播。我还有一个问题,如何在时间选择器中隐藏以前的时间。我用上面提到的代码修改了Xamarin DatePicker示例。您能否运行此项目以查看是否仍然存在相同的问题?你在测试什么Android版本?它只发生在那个版本上吗?谢谢你用示例代码重播。我还有一个问题,如何在时间选择器中隐藏以前的时间。