Java事件绑定问题绑定库
Java Event Binding Issue Binding Library
我将这个 https://github.com/blazsolar/HorizontalPicker 库转移到 Java 绑定库中。
该库实现了一个 OnItemSelected 事件,它在 Java.
中像这样使用
@Override
public void onItemSelected(int index) {
Toast.makeText(this, "Item selected", Toast.LENGTH_SHORT).show();
}
现在我想在我的 C# 代码中像这样使用它。
var Picker = view.FindViewById<Com.Wefika.Horizontalpicker.HorizontalPicker>(Resource.Id.numberPicker);
Picker.onItemClicked+= delegate{};
很遗憾,onItemClicked 不存在。
我查看了生成的 api xml 并在那里声明了它。
<interface abstract="true" deprecated="not deprecated" final="false" name="HorizontalPicker.OnItemClicked" static="true" visibility="public">
<method abstract="true" deprecated="not deprecated" final="false" name="onItemClicked" native="false" return="void" static="false" synchronized="false" visibility="public">
现在我想知道如何使用此活动?
我必须修改某些东西还是可以通过其他方式获得它?
看起来,问题出在原始项目上,因为它无法为其创建事件委托。您可以通过以下代码使用该事件,并且必须为以下代码编写 IOnClicked 的实现:
HorizontalPicker Picker = view.FindViewById<Com.Wefika.Horizontalpicker.HorizontalPicker>(Resource.Id.numberPicker);
HorizontalPickerItemClicked itemclicked = new HorizontalPickerItemClicked();
Picker.SetOnItemClickedListener(itemclicked);
更新实施:
public class HorizontalPickerItemClicked : HorizontalPicker.IOnItemClicked
{
public void Dispose()
{
}
public IntPtr Handle { get; }
public void OnItemClicked(int p0)
{
// Do something with p0
}
}
我将这个 https://github.com/blazsolar/HorizontalPicker 库转移到 Java 绑定库中。 该库实现了一个 OnItemSelected 事件,它在 Java.
中像这样使用@Override
public void onItemSelected(int index) {
Toast.makeText(this, "Item selected", Toast.LENGTH_SHORT).show();
}
现在我想在我的 C# 代码中像这样使用它。
var Picker = view.FindViewById<Com.Wefika.Horizontalpicker.HorizontalPicker>(Resource.Id.numberPicker);
Picker.onItemClicked+= delegate{};
很遗憾,onItemClicked 不存在。 我查看了生成的 api xml 并在那里声明了它。
<interface abstract="true" deprecated="not deprecated" final="false" name="HorizontalPicker.OnItemClicked" static="true" visibility="public">
<method abstract="true" deprecated="not deprecated" final="false" name="onItemClicked" native="false" return="void" static="false" synchronized="false" visibility="public">
现在我想知道如何使用此活动? 我必须修改某些东西还是可以通过其他方式获得它?
看起来,问题出在原始项目上,因为它无法为其创建事件委托。您可以通过以下代码使用该事件,并且必须为以下代码编写 IOnClicked 的实现:
HorizontalPicker Picker = view.FindViewById<Com.Wefika.Horizontalpicker.HorizontalPicker>(Resource.Id.numberPicker);
HorizontalPickerItemClicked itemclicked = new HorizontalPickerItemClicked();
Picker.SetOnItemClickedListener(itemclicked);
更新实施:
public class HorizontalPickerItemClicked : HorizontalPicker.IOnItemClicked
{
public void Dispose()
{
}
public IntPtr Handle { get; }
public void OnItemClicked(int p0)
{
// Do something with p0
}
}