2017-02-27 18 views
-1

私はJNIにセットされたデータにいくつかの困難があり、Javaにデータを取得しています。私はどうすればいいですか?ここで私は何が間違っているかわからないので、このコードを参照してください。この問題のために私を助けてください。

Student.java
JNIにデータを設定してJavaに取り込む方法

public class Student { 

    private int age; 

    public int getAge() { 
     return age; 
    } 

    public void setAge(int age) { 
     this.age = age; 
    } 
} 


MainActivity.java

public class MainActivity extends AppCompatActivity { 

    static { 
     System.loadLibrary("native-lib"); 
    } 

    public static native Student getStudentAge(); 

    protected Student student; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     student = getStudentAge(); 
     Log.d("TAG_DATA", String.valueOf(student.getAge())); 
    } 
} 


ネイティブlib.cpp

JNIEXPORT jobject JNICALL 
Java_com_example_helloJni_MainActivity_getStudentAge(JNIEnv *env, jclass type) { 

    jclass fStdClass = env->FindClass("com/example/helloJni/Student"); 
    jobject nStdClass = env->AllocObject(fStdClass); 
    jmethodID methodId = env->GetMethodID(fStdClass, "setAge", "(I)V"); 
    env->CallObjectMethod(nStdClass, methodId, 10); 

    return nStdClass; 
} 


エラー:

JNI DETECTED ERROR IN APPLICATION: the return type of CallObjectMethodV does not match 
+0

あなたの不可解な質問を英語に翻訳してください。 – EJP

+0

@EJP私の悪い英語のために申し訳ありません。 –

答えて

1

setAgeはvoidを返すので、あなたは、CallVoidMethodを使用する必要があります。

関連する問題