Невозможно неявно преобразовать ошибку типа в учебнике по Android Spinner

1

Привет, я пытаюсь сделать Spinner Tutorial для Android. http://docs.xamarin.com/android/tutorials/User_Interface/spinner Я получаю сообщение об ошибке: Cannot implicitly convert type 'System.EventHandler<Android.Widget.ItemEventArgs>' to 'System.EventHandler<Android.Widget.AdapterView.ItemSelectedEventArgs>' (CS0029) в строке 26 моего Activity1.cs. Я только что скопировал код из учебника, поэтому я не уверен, что мне нужно изменить эту строку, чтобы я мог ее запустить. Вот мой Activity1.cs:

using System;

using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;

namespace HelloSpinner
{
[Activity (Label = "HelloSpinner", MainLauncher = true)]
public class Activity1 : Activity
{
    int count = 1;

    protected override void OnCreate (Bundle bundle)
    {
        base.OnCreate (bundle);

        // Set our view from the "Main" layout resource
        SetContentView (Resource.Layout.Main);

        Spinner spinner = FindViewById<Spinner> (Resource.Id.spinner);

        spinner.ItemSelected += new EventHandler<ItemEventArgs> (spinner_ItemSelected); 
        var adapter = ArrayAdapter.CreateFromResource (
            this, Resource.Array.planets_array, Android.Resource.Layout.SimpleSpinnerItem);

        adapter.SetDropDownViewResource (Android.Resource.Layout.SimpleSpinnerDropDownItem);
        spinner.Adapter = adapter;
    }

    private void spinner_ItemSelected (object sender, ItemEventArgs e)
    {
        Spinner spinner = (Spinner)sender;

        string toast = string.Format ("The planet is {0}", spinner.GetItemAtPosition (e.Position));
        Toast.MakeText (this, toast, ToastLength.Long).Show ();
    }
}
}
Теги:
xamarin.android

1 ответ

2
Лучший ответ

Простейший подход, вероятно, состоит в том, чтобы просто использовать тип делегирования, объявленный событием... в идеале с использованием синтаксиса преобразования упрощенного метода:

spinner.ItemSelected += spinner_ItemSelected; 

...

private void spinner_ItemSelected(object sender, AdapterView.ItemSelectedEventArgs e)

(Теперь вам просто нужно использовать директиву для Android.Widget.)

  • 3
    Как дополнительная информация ... учебник, скорее всего, устарел - в Mono для Android 4.2 было несколько изменений в синтаксисе обработки событий
  • 0
    Когда я заменяю строку 26 на это, я получаю сообщение об ошибке: нет перегрузки для spinner_ItemSelected 'соответствует делегату' System.EventHandler <Android.Widget.AdapaterView.ItemSelectedEventArgs> '(CS0123)
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню