我通过名为Xamarin.GradleBinding的visual studio扩展创建了java绑定库。我添加了ru.rambler.android:swipe-layout:1.0.14
包并在使用其SwipeLayout
时,一切正常。但不幸的是,它没有创建相应的C#类或类似的东西。我尝试手动添加包但仍然没有。
我检查了source on GitHub。 SwipeLayout
有一个public void
方法reset()
,没有参数:
public void reset()
我尝试使用JNIEnv
从c#调用此方法。
IntPtr type = JNIEnv.FindClass("ru/rambler/libs/swipe_layout/SwipeLayout");
IntPtr method = JNIEnv.GetMethodID(type, "reset", "()V");
try
{
JNIEnv.CallObjectMethod(_swiper.Handle, method);
}
catch (Exception ex)
{
var s = ex.Message;
}
已成功找到类型和方法,但正在调用
JNIEnv.CallObjectMethod(_swiper.Handle, method);
此方法会崩溃应用程序,甚至不会进入catch块。
Tt必须是_swiper.Handle
第一个参数的原因。
_swiper
字段的类型为ViewGroup
,因为SwipeLayout
来自ViewGroup
。
我无法找到如何获取视图的指针来传递该方法。
在调试时,当我调查_swiper
时,它似乎是SwipeLayout
的正确实例
答案 0 :(得分:1)
我已使用Xamarin.Android
将控件重写为C#。它可用here on my GitHub,但我还没来得及测试它,所以它可能有错误。
但您可以尝试使用原始的.java
源代码来修复我在重写期间错过的错误。