2011-06-13 90 views
0

我正在尝试使用NDK。 假设我有这个Java片段调用本机功能:从本地访问Rect类

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); 
} 

这将编译好的,但后来我得到一个异常说,现场留下ISN”是班级的一部分吗?

帮助,任何人?

回答

0

你应该通过矩形对象(在你的案件 'R')到Get/SetIntField功能,即

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