2013-10-12 67 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

相关问题