2016-08-01 8 views
1

Ich bin mit dem folgenden Beispiel https://developer.xamarin.com/guides/android/user_interface/date_picker/ folgen, aber ich bekomme den Fehler: Der Typ 'NewInstance' existiert nicht im Typ 'DatePickerFragment'Der Typ 'NewInstance' existiert nicht im Typ 'DatePickerFragment'

Kann jemand sehen, wo ich falsch liege.

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); 
     } 
    } 

Antwort

4

Entfernen Sie das Schlüsselwort new. Es ist eine Methode, die Sie anrufen. Sie erstellen kein neues Objekt.

Das wäre richtig Aufruf sein:

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

+0

Dank Erwin, ich das getan hätte nicht bemerkt. Wird als Antwort in 5 Minuten als zulässig markieren –

Verwandte Themen