首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在JavaScript中将值数组从Android活动传递到WebView中

在JavaScript中将值数组从Android活动传递到WebView中
EN

Stack Overflow用户
提问于 2010-12-02 02:03:12
回答 2查看 7.6K关注 0票数 4

我正在使用一个JS库在我的安卓应用程序的WebView中绘制图形。我想从SQLite数据库中提供数据。此时,我一直在讨论如何将数据数组从Java传递到JavaScript。JavaScript部分期望类似这样的内容:

代码语言:javascript
复制
data = new Array([10, 10], [20, 10]);

我了解addJavaScriptInterface,并设法将单个值从活动传递到WebView。只是数组给我带来了麻烦。我想过这样的事情:

代码语言:javascript
复制
final class ChartDataLoader {

    public double[][] getData() {
        double[][] data = {{10, 10}, {20, 10}};
        return data;
    }
}

请注意,现在我只是对数据进行硬编码,但最终会从数据库中提取出来。然后我把这个暴露给我的JS:

代码语言:javascript
复制
webView.addJavascriptInterface(new ChartDataLoader(), "dataLoader");

最后,尝试在JavaScript中阅读它:

代码语言:javascript
复制
<html>
<head>
<script type="text/javascript" src="jscharts.js"></script>
</head>

<body>
<div id="chartcontainer">You should see a chart here.</div>

<script type="text/javascript">

 myData = dataLoader.getData(); 
 alert("DataReceived: " + myData.length);
 alert("Element 0 : " + myData[0]);

 var myChart = new JSChart('chartcontainer', 'line');
 myChart.setDataArray(myData);
 myChart.draw();

</script>
</body>
</html>

JavaScript在这两条警告语句上失败,声明:

file:///android_asset/chart.html:15上未定义的

错误/控制台(2455):未定义的TypeError:无法读取未定义的属性“长度”

有什么暗示吗?我在网上看到了一些代码,其他人将数组转换为字符串,然后在JavaScript中重新创建它,但对我来说,这似乎是过头了,我希望找到一个更好的解决方案。另一种方法是将XML文件传递给图表库,但我认为每次用户想要看到图表时创建一个新的XML都会很慢。

EN

回答 2

Stack Overflow用户

发布于 2012-11-12 09:23:05

删除行:警告(“DataReceived:”+ myData.length);

票数 5
EN

Stack Overflow用户

发布于 2010-12-02 02:26:57

要修复最近的错误,需要将myData定义为变量。

在问题的末尾(将数组转换为字符串),您谈论的是JSON。任何上下文切换都是昂贵的(例如,Android到web)。序列化/反序列化可能不会拖慢你的脚步。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4331004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档