C# Xamarin функция OnClick

что я делаю это

Button button1 = FindViewById<Button>(Resource.Id.button1);

button1.SetOnClickListener(new View.OnClickListener()
    {
        public void onClick(View v)
        {
            // Perform action on click
        }
    });

но по каким-то причинам я получаю OnClickListener подчеркнута красным цветом. и я не могу ничего сделать, чтобы запустить функцию, когда я нажимаю кнопку .

3 ответов


на Xamarin.Android способ делать SetOnClickListener через события стиля C#:

Button button1 = FindViewById<Button>(Resource.Id.button1);
button1.Click += (sender, e) => {
   // Perform action on click
};

требуется чтение для Android Xamarin в события и слушатели


проблема в том, что в SetOnClickListener вы устанавливаете inline анонимный класс реализация OnClickListener интерфейс.

это не поддерживается в C# от руководство по программированию на C# вы можете найти

анонимные типы-это типы классов, состоящие из одного или нескольких общедоступных свойств только для чтения. Никакие другие типы членов класса, такие как методы или события, не допускаются. Анонимный тип не может быть приведен к какому-либо интерфейсу или тип за исключением объекта.

но это не значит, что вы не можете использовать SetOnClickListener на всех.

можно сделать button1.SetOnClickListener(this) и реализовать свой OnClickListener в том же классе

или

создать класс (может быть внутренний класс) реализует OnClickListener С вашей реализацией и передать его экземпляр в ваш SetOnClickListener

в обоих случаях вы подчиняетесь "политике реального имени" C#:)


нет необходимости использовать делегаты или события стиля c#, вы можете использовать оба в зависимости от используемого класса. Помните, что вид.IOnclicklistener-это интерфейс, поэтому наследовать от него так,

public class myactivity : AppcompatActivity, View.IonClickListener

он предлагает вам реализовать метод onclick интерфейса, как показано ниже,,

public void OnClick(View v)
        {
            throw new NotImplementedException();
        }

вы можете использовать смесь событий стиля c# и прослушивателей событий. Что может сделать java Xamarin ..Я считаю, что это правильный ответ на этот вопрос..