6

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

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

public void reset()

我尝试从 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;
}

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

JNIEnv.CallObjectMethod(_swiper.Handle, method);

此方法使应用程序崩溃,它甚至不会进入 catch 块。

Tt 必须是_swiper.Handle第一个参数的原因。 _swiperfield 是类型,ViewGroup因为SwipeLayout它是从ViewGroup. 我找不到如何获取视图指针以传递该方法。

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

在此处输入图像描述

4

1 回答 1

1

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

但是您可以尝试一下,并可能修复我在使用原始.java源代码重写期间遗漏的错误。

于 2018-01-24T22:34:04.933 回答