1

考虑这个带有静态方法的 Java 类:

public class TestClass{
    public string str;
    public TestClass() {
        str = "Test From Java";
    }
    public static String staticMethod() {
        return "Test From Java";
    }
}

我在 c++ 文件中编写了这些代码行:

QAndroidJniObject str =  QAndroidJniObject::callStaticObjectMethod(
                                   "org/.../TestClass"
                                   ,"staticMethod"
                                   ,"(V)Ljava/lang/String;");

似乎一切正常,但我不知道如何使用该str对象。我尝试QString使用方法将其转换为对象,str.tostring()但它总是返回一个空字符串。为什么它不能按预期工作?我还测试()Ljava/lang/String;了方法签名,但没有成功!
提前致谢。

4

1 回答 1

1

<...>您应该在调用方法时指定返回的 JNI 类型:

QAndroidJniObject str =  QAndroidJniObject::callStaticObjectMethod<jstring>(
                               "org/.../TestClass"
                               ,"staticMethod");

QString string = str.toString();

此处无需定义签名,因为您的函数没有参数。

于 2015-02-24T10:43:03.893 回答