我把这个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中的不同按钮.此外,每行都有多个按钮.
编辑:
解决方法
将属性[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程序集添加到项目中.
因此,此功能仅适用于独立和更高的许可证.