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 に答える