NDK开发笔记(三)---JNI的学习

一.本文是主要写GetFieldID,GetMethodID方法的使用


 

 

jclass clazz=(*env)->GetObjectClass(env,thiz);//其中的clazz就是Natvie class.

 

 

 

 

开始我在写这个程序的时候一直报GetFileId ..No such "value".

找了好久才发现 我在Native.java中定义的 和getValue()也是用static

 

然后定义的value不是static.

在fid=(*env)->GetFieldID(env,clazz,"value","Ljava/lang/String;"); 报错,是因为static方法中必须要用static的变量

所以我把getValue()方法的static方法去掉,下面是ok的代码。

 

 

 

我本来想全部用static来解决就是

fid=(*env)->GetStaticFieldID(env,clazz,"value","Ljava/lang/String;");

 

不知道什么原因,还是出现上面的错误。。后续来改。

 

 

 

今天试getMethodId();

 

mid=(*env)->GetMethodID(env,clazz,"showMessage","()V");//showMessage为Java中的方法,"()V"为该方法是return void的方法。

(*env)->CallVoidMethod(env,thiz,mid);

 

 

与GetMethodID相对应的是Call**Method().

 

对应static的属性一定要用static的属性。

 

 

fNumberId=(*env)->GetStaticFieldID(env,clazz,"number","I");

if(fNumberId==NULL)

return;

jint num=(*env)->GetStaticIntField(env,clazz,fNumberId);

//print(num);

(*env)->SetStaticIntField(env,clazz,fNumberId,2);

 

 

 

需要源码的请留言给出mail的地址。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值