我跟随以下示例https://developer.xamarin.com/guides/android/user_interface/date_picker/,但我收到错误:Type' NewInstance'类型' DatePickerFragment'
中不存在任何人都可以看到我出错的地方。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.Util;
namespace AndroidApp
{
public class DatePickerFragment : DialogFragment, DatePickerDialog.IOnDateSetListener
{
public static readonly string TAG = "X:" + typeof(DatePickerFragment).Name.ToUpper();
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,
currently.Day);
return dialog;
}
public void OnDateSet(DatePicker view, int year, int monthOfYear, int dayOfYear)
{
DateTime seletedDate = new DateTime(year, monthOfYear + 1, dayOfYear);
Log.Debug(TAG, seletedDate.ToLongDateString());
_dateSelectedHandler(seletedDate);
}
}
}
public class MainActivity : Activity
{
TextView _dateDisplay;
Button _dateSelectedButton;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
//DatePicker
_dateDisplay = FindViewById<TextView>(Resource.Id.date_display);
_dateSelectedButton = FindViewById<Button>(Resource.Id.date_select_button);
_dateSelectedButton.Click += DateSelected_OnClick;
//End DatePicker
}
void DateSelected_OnClick(object sender, EventArgs e)
{
DatePickerFragment frag = new DatePickerFragment.NewInstance(delegate (DateTime time)
{
_dateDisplay.Text = time.ToLongDateString();
});
frag.Show(FragmentManager, DatePickerFragment.TAG);
}
}
答案 0 :(得分:4)
删除new
关键字。这是你要打电话的方法。您没有创建新对象。
正确的电话会是:
DatePickerFragment frag = DatePickerFragment.NewInstance(delegate (DateTime time)