繁体   English   中英

Xamarin.Android绑定调用java Object方法

[英]Xamarin.Android binding Call java Object method

我通过名为Xamarin.GradleBinding的visual studio扩展创建了java绑定库。 我添加了ru.rambler.android:swipe-layout:1.0.14包,并在使用其SwipeLayout ,一切正常。 但不幸的是,它没有创建相应的C#类或类似的东西。 我尝试手动添加包但仍然没有。

我检查了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的正确实例

在此输入图像描述

我用Xamarin.Android重写了对C#的Xamarin.Android 它可以在我的GitHub上找到 ,但我还没来得及测试它,所以它可能有bug。

但是您可以尝试使用原始的.java源代码来修复我在重写期间错过的错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM