【问题标题】:C# Xamarin OnClick functionC# Xamarin OnClick 函数
【发布时间】:2016-01-30 17:06:57
【问题描述】:

我正在做的是这个

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

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

但由于某些原因,OnClickListener 带有红色下划线。当我单击按钮时,我无法执行任何操作来启动功能。

【问题讨论】:

    标签: c# android xamarin


    【解决方案1】:

    Xamarin.Android 执行 SetOnClickListener 的方式是通过 C# 样式事件:

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

    Xamarin 的 Android 必读Events and Listeners

    【讨论】:

      【解决方案2】:

      这里真正的问题在于您的SetOnClickListener,您正在设置一个内联匿名类来实现OnClickListener 接口。

      C#不支持这个,从C# programming guide可以找到,

      匿名类型是由一个或多个公共只读属性组成的类类型。不允许使用其他类型的类成员,例如方法或事件。匿名类型不能转换为除对象之外的任何接口或类型。

      但这并不意味着你根本不能使用SetOnClickListener

      您可以在同一类中执行 button1.SetOnClickListener(this) 并实现您的 OnClickListener

      创建一个类(可以是内部类)用您的实现实现OnClickListener,并将它的实例传递给您的SetOnClickListener

      在这两种情况下,您都遵守 C# 的“实名政策”:)

      【讨论】:

        【解决方案3】:

        无需使用委托或 c# 样式事件,您可以根据所使用的类同时使用两者。记住 View.IOnclicklistener 是一个接口,所以像这样继承它,

        public class myactivity : AppcompatActivity, View.IonClickListener
        

        提示你实现如下界面的onclick方法,

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

        您可以混合使用 c# 样式的事件和事件侦听器。 java 能做什么 Xamarin 能做什么 ..这是我相信这个问题的正确答案..

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-05-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-11-06
          • 1970-01-01
          • 2021-08-22
          • 1970-01-01
          相关资源
          最近更新 更多