Android和Luaj之间互相传值的问题
2016-06-15 10:22
441 查看
第一次写有点紧张呢啊哈哈
直接上代码
对应的安卓这边的代码:
//方法一定是静态的!!
public static void pay( String orderId, String price) {
System.out.println("=======pay======="+orderId+"=="+price);
}
还有一点,我从luaj那边单独传int值,安卓这边接的话,是有问题的,比如那边传个10,到安卓这边输出就是14834837之类的一串,如果单独传String的话,就会报内存溢出的错,就穿不过来,所以最后我传了两个,String和int都传了,这边接到的值就没问题,也不会报错。不知道原因……代码如下:
function shareLayer:onShare()
print("LYQ********")
-- self:runAction(cc.RemoveSelf:create())
local text=tostring(info.bId)
--tostring(info.bId)在安卓那边用String接的,info.bId用int接的。两个的值完全一样,但这样传就不会报错。。
local args = {tostring(info.bId),info.bId}
print("LYQ********"..info.bId..tostring(info.bId))
local sigs = "(Ljava/lang/String;I)V"
local className = "org/cocos2dx/lua/AppActivity"
local ok,ret = luaj.callStaticMethod(className,"Shard",args,sigs)
if not ok then
return nil
else
return ret
end
end
下面是luaj接收的代码:
好了,以上就是我这两天在做的东西。可能不完善,想起来了再补充。
luaj这边其余的不明白的随便搜一下有好多,我这边只是简单说一下怎么传值。
哈哈哈。大家午安~~~
直接上代码
luaj这边,以支付宝为例
function Dionation:getDingDan(trade_no) self.DingDannum=trade_no print("lxd"..trade_no) --要传到安卓那边的内容 local args = {trade_no, tostring(self.money) } --要传的类型,Ljava/lang/String;代表是String类型的,还有int型的是I,其余的自己去搜,网上好多。括号后面的V代表的是安卓那边类是Void,没有返回值的,如果那边是有返回值的String的,那V就要写成Ljava/lang/String;了。 local sigs = "(Ljava/lang/String;Ljava/lang/String;)V" --对应的方法所在的类 local className = "org/cocos2dx/lua/MyAliPay" --“pay”是要调用的安卓的方法名 local ok,ret = luaj.callStaticMethod(className,"pay",args,sigs) if not ok then return nil else return ret end print("***********************8hahah") end
对应的安卓这边的代码:
//方法一定是静态的!!
public static void pay( String orderId, String price) {
System.out.println("=======pay======="+orderId+"=="+price);
}
还有一点,我从luaj那边单独传int值,安卓这边接的话,是有问题的,比如那边传个10,到安卓这边输出就是14834837之类的一串,如果单独传String的话,就会报内存溢出的错,就穿不过来,所以最后我传了两个,String和int都传了,这边接到的值就没问题,也不会报错。不知道原因……代码如下:
function shareLayer:onShare()
print("LYQ********")
-- self:runAction(cc.RemoveSelf:create())
local text=tostring(info.bId)
--tostring(info.bId)在安卓那边用String接的,info.bId用int接的。两个的值完全一样,但这样传就不会报错。。
local args = {tostring(info.bId),info.bId}
print("LYQ********"..info.bId..tostring(info.bId))
local sigs = "(Ljava/lang/String;I)V"
local className = "org/cocos2dx/lua/AppActivity"
local ok,ret = luaj.callStaticMethod(className,"Shard",args,sigs)
if not ok then
return nil
else
return ret
end
end
好,以上是从luaj到安卓那边,现在说说安卓到luaj这边。
直接上代码://mid是luaj那边的一个标示id,在安卓这边用这个方法,把要传的值传到对应的id那边。暂时只会传string的,如果要传多个就多加几个id Cocos2dxLuaJavaBridge.callLuaFunctionWithString(mid, url); Cocos2dxLuaJavaBridge.releaseLuaFunction(mid);
下面是luaj接收的代码:
function LoginScene:onQQ() print("qq") --就用这个接收,括号里面就是接收到的值 local function id(id_str) print("*****************id_str******8hahah"..id_str) end local function name(name_str) print("*****************name_str******8hahah"..name_str) end local function head_url(url_str) print("*****************url_str******8hahah"..url_str) end --上面那个mid就是这边传过去的这个mid哦,然后一切就都跟上面一样了呢 local args = { "SHARE_MEDIA.QQ", id ,name,head_url} local sigs = "(Ljava/lang/String;III)V" local className = "org/cocos2dx/lua/AppActivity" local ok,ret = luaj.callStaticMethod(className,"QQLogin",args,sigs) print("***********************8hahah"..ret) if not ok then return nil else return ret end end
好了,以上就是我这两天在做的东西。可能不完善,想起来了再补充。
luaj这边其余的不明白的随便搜一下有好多,我这边只是简单说一下怎么传值。
哈哈哈。大家午安~~~
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories