c# – Xamarin.Android:如何捕获OnClick XML属性中定义的Button事件?

前端之家收集整理的这篇文章主要介绍了c# – Xamarin.Android:如何捕获OnClick XML属性中定义的Button事件?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我把这个Button放在一个RelativeLayout里面,作为自定义ListView行布局的一部分.
<Button
    p1:text="Edit"
    p1:layout_width="75dp"
    p1:layout_height="wrap_content"
    p1:id="@+id/editButton"
    p1:layout_centerHorizontal="true"
    p1:background="@drawable/btn_blue"
    p1:textColor="@color/white"
    p1:focusable="false"
    p1:layout_below="@id/sparyTableLayout"
    p1:textAppearance="?android:attr/textAppearanceMedium"
    p1:onClick="myClickHandler" />

用户单击按钮时,我想要按钮调用功能

public void myClickHandler(View v)
{
    Console.WriteLine ((v as Button).Text);
}

但是,我收到这个错误

java.lang.IllegalStateException: Could not find a method myClickHandler(View) in the activity   class Test_Project.MyActivity for onClick handler on view class android.widget.Button with id 'editButton'

我正在尝试区分这个ListView中的不同按钮.此外,每行都有多个按钮.

编辑:

不要在Buttons中使用标签,它可能会导致ListView滚动期间的性能下降.下面的解决方案是一个更好的选择.

解决方法

属性[Java.Interop.Export]添加到您的点击处理程序方法中:
[Java.Interop.Export("myClickHandler")] // The value found in android:onClick attribute.
public void myClickHandler(View v) // Does not need to match value in above attribute.
{
    Console.WriteLine ((v as Button).Text);
}

这将通过Generated Callable Wrapper为您的活动暴露方法到Java,以便它可以从Java运行时调用.

看到:

> Mono For Android 4.2 release notes标题为“导出任意Java成员以更好的Java集成”的部分.

重要的提示

使用[Java.Interop.Export]需要您将Mono.Android.Export程序集添加到项目中.

因此,此功能仅适用于独立和更高的许可证.

原文链接:https://www.f2er.com/csharp/94794.html

猜你在找的C#相关文章