Type' NewInstance'类型' DatePickerFragment'

时间:2016-08-01 12:09:45

标签: android xamarin.android

我跟随以下示例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);
        }
    }  

1 个答案:

答案 0 :(得分:4)

删除new关键字。这是你要打电话的方法。您没有创建新对象。

正确的电话会是:

DatePickerFragment frag = DatePickerFragment.NewInstance(delegate (DateTime time)