2016-08-01 22 views
1

我正在跟着下面的例子https://developer.xamarin.com/guides/android/user_interface/date_picker/,但我得到错误:类型'NewInstance'不存在于类型'DatePickerFragment'类型'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); 
     } 
    } 

回答

4

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

正确的调用是:

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

+0

感谢欧文,没有注意到我做到了。如果允许,将在5分钟内标记为答案 –

相关问题