2013-10-12 101 views
2

從JNI內部,我該如何獲取字符串資源ID? 例如,在Java中,它看起來像如何從jni獲取字符串資源ID?

final int langId = R.string.LANGUAGE; 

有自動生成R.java:

package com.my.game; 

... 

public final class R { 
    ... 
    public static final class string { 
     public static int LANGUAGE=0x7f06001c; 
     ... 
    } 
... 
} 

我試圖

jclass rcl = jni_env->FindClass("com.my.game.R.string"); 
assert(rcl); 
jfieldID fid = jni_env->GetFieldID(rcl, "LANGUAGE", "(I)"); 
assert(fid); 
int langId = jni_env->GetStaticIntField(rcl, fid); 

但第一個斷言(assert(rcl))解僱。

回答

2

有三個問題在你的代碼:

首先,string類嵌套在com.my.game.R。要通過JNI訪問它,你必須把它寫這樣的:

com.my.game.R$string 

第二個問題:該字段是靜態的,所以你必須使用GetStaticFieldID代替GetFieldID

最後,GetFieldID想要一個字段簽名。字段不是一種方法,所以括號在這裏是錯誤的。現場簽名只是I

相關問題