exe*_*ook 10 java-native-interface android
我试图从C++访问Java类中的"int"字段; 其实我也试过其他类型.我可以调用方法OK.但不是访问字段.我得到随机垃圾值而不是我期待的.
这是我的Java代码:
private class MYView extends View {
public MYView(Context context) { super(context); five = 555; }
public int five;
....
}
Run Code Online (Sandbox Code Playgroud)
C++部分:
jobject view = (jobject) Env->CallObjectMethod(Obj, jfindViewById, 3);
ClassMYView = Env->GetObjectClass(view);
jfieldID f = Env->GetFieldID(ClassMYView, "five", "I");
int i = Env->GetIntField(ClassMYView, f); <-- error is here, class is not object!
Run Code Online (Sandbox Code Playgroud)
这是我在C++代码执行后得到的
view = 0x40521b80
ClassMYView = 0x40521a70
f = 0x444727e4
i = 4390958 // supposed to be 555!
Run Code Online (Sandbox Code Playgroud)
请有经验的人,我做错了什么?谢谢.
spa*_*ici 12
也许你想写
jobject obj = (jobject) Env->CallObjectMethod(Obj, jfindViewById, 3);
ClassMYView = Env->GetObjectClass(obj);
jfieldID f = Env->GetFieldID(ClassMYView, "five", "I");
int i = Env->GetIntField(obj, f);
Run Code Online (Sandbox Code Playgroud)
编译器没有给出错误,因为基本上jobject和jclass是相同的类型.
| 归档时间: |
|
| 查看次数: |
6615 次 |
| 最近记录: |