Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Android:如何捕获OnClick XML属性中定义的按钮事件?_C#_Android_Xml_Xamarin - Fatal编程技术网

C# Android:如何捕获OnClick XML属性中定义的按钮事件?

C# Android:如何捕获OnClick XML属性中定义的按钮事件?,c#,android,xml,xamarin,C#,Android,Xml,Xamarin,我在RelativeLayout中有这个按钮,它是自定义ListView行布局的一部分 当用户单击该按钮时,我希望该按钮调用此函数: public void myClickHandler(视图v) { Console.WriteLine((v作为按钮).Text); } 然而,我得到了这个错误 java.lang.IllegalStateException: Could not find a method myClickHandler(View) in the activity cla

我在RelativeLayout中有这个按钮,它是自定义ListView行布局的一部分


当用户单击该按钮时,我希望该按钮调用此函数:

public void myClickHandler(视图v)
{
Console.WriteLine((v作为按钮).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);
}
这将通过for活动向Java公开该方法,以便可以从Java运行时调用它

见:

  • 在标题为“导出任意Java成员以实现更好的Java集成”的部分中
  • 重要提示 使用
    [Java.Interop.Export]
    需要将
    Mono.Android.Export
    程序集添加到项目中


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

    我认为现在所有开发人员都可以使用此功能。回答得很好!我已经在互联网上找了好几个小时了。