用静态方法考虑这个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
对象。我尝试使用str.tostring()
方法将它转换为QString
对象,但它总是返回一个空字符串。为什么它没有按预期工作?我还测试了()Ljava/lang/String;
的方法签名,但没有成功
提前谢谢。
调用方法时,应在<...>
中指定返回的JNI类型:
QAndroidJniObject str = QAndroidJniObject::callStaticObjectMethod<jstring>(
"org/.../TestClass"
,"staticMethod");
QString string = str.toString();
这里不需要定义签名,因为函数没有参数。