Xamarin.Android绑定调用java Object方法

mis*_*iga 6 java xamarin.android xamarin jnienv java-binding

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

我检查了GitHub上源代码.SwipeLayout有一个没有参数的public void方法reset():

public void reset()
Run Code Online (Sandbox Code Playgroud)

我尝试从c#中调用此方法JNIEnv.

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;
}
Run Code Online (Sandbox Code Playgroud)

已成功找到类型和方法,但正在调用

JNIEnv.CallObjectMethod(_swiper.Handle, method);
Run Code Online (Sandbox Code Playgroud)

这个方法崩溃了应用程序,它甚至没有进入catch块.

Tt必须是_swiper.Handle第一个参数的原因. _swiper字段是类型,ViewGroup因为SwipeLayout派生自ViewGroup.我找不到如何获取视图的指针来传递该方法.

在调试时,当我调查时_swiper,它似乎是正确的实例SwipeLayout

在此输入图像描述

Mar*_*und 1

我已经用 C# 重写了控件Xamarin.Android。它可以在我的 GitHub 上找到,但我还没有时间测试它,所以它可能有错误。

但你可以尝试一下,并有可能修复我在使用原始源代码重写期间错过的错误.java