从Native访问Rect类

时间:2011-06-13 14:34:28

标签: android-ndk

我正在尝试使用NDK。 假设我有这个java片段来调用本机函数:

private native void changerect(Rect);

Rect r=new Rect();

r.set(10,10,100,100);

changerect(Rect r);

然后,原生函数:

void changerect(JNIEnv *env, jobect this, jobject r)
{
 jclass rectClass=(*env)->GetObjectClass(env,r);
 jfieldID jid=(*env)->GetFieldID(env,rectClass,"left","I");
 jint l=(*env)->GetIntField(env,rectClass,fid);
 //now, change the left value
 l+=20;
 (*env)->SetIntField(env,rectClass,fid,l);
}

这编译好了,但是我得到一个例外,说左边的字段不是该类的一部分?

帮助,有人吗?

1 个答案:

答案 0 :(得分:0)

您应该将Rect对象(在您的情况下为'r')传递给Get / SetIntField函数,即

jint l=(*env)->GetIntField(env,r,fid);
(*env)->SetIntField(env,r,fid,l);