noprom
noprom
  • 发布:2015-08-07 10:22
  • 更新:2015-08-07 15:59
  • 阅读:1642

js调用代码出问题

分类:Native.js

1.我用java写了一个activity,并在里面写了一个方法,该方法如下:

public String getChannel(String name) {  
    Log.d(TAG, "getChannel()");  
    Toast.makeText(getApplicationContext(), "这是测试啊啊啊啊啊", Toast.LENGTH_LONG).show();  
    return name;  
}

2.该方法位于 io.dcloud.FindchannelActivity 这个类里面,详情见附件。

在js这边的代码如下:

var Channel = plus.android.importClass('io.dcloud.FindchannelActivity');  
var channelObj = new Channel();  
var channel = plus.android.invoke(channelObj, "getChannel", "channel");  
alert(channel);

3.在eclipse中真机离线打包测试的时候,Log.d方法没有调用,整个getChannel返回的结果也是null。

4.而如果在我的getChannel方法里面这样书写:

public String getChannel(String name) {  
    return name;  
}

在js这边的alert(channel);是会给我弹出一个“channel”的。

5.也就是说,在getChannel里面用android写的代码没有运行,希望官方能解释一下,谢谢。

2015-08-07 10:22 负责人:无 分享
已邀请:
DCloud_Android_ST

DCloud_Android_ST

你看一下手机上是否有异常,我这边则测试了一个,是可以的

DCloud_Android_ST

DCloud_Android_ST

还有就是
Toast.makeText(getApplicationContext(), "这是测试啊啊啊啊啊", Toast.LENGTH_LONG).show(); 这样使用getApplicationContext() 是有问题的。
需要context你可以通过var main = plus.android.runtimeMainActivity(); ,然后传递main进去充当上下文,或者使用原生安卓方式获取有效的Context

  • noprom (作者)

    感谢回答!多谢!

    2015-08-07 12:31

M522828

M522828

这样做是有这个问题,我后来改成插件的方法来调就行了,参考:http://ask.dcloud.net.cn/article/66

该问题目前已经被锁定, 无法添加新回复