如何将数组数组传递给Java函数?

时间:2018-06-19 07:27:14

标签: nativescript

我想在 JavaScript a

中创建
new android.content.res.ColorStateList(states,colors)

定义为

public ColorStateList (int[][] states, int[] colors)

我无法弄清楚如何传递int[][] states参数。

我已尝试

一个。

var states = [
    [android.R.attr.state_pressed],
    [android.R.attr.state_enabled],
];

结果:

Error: Cannot marshal JavaScript argument 16842919,16842910 at index 0 to Java type.

(16842919,16842910是数组中的两个常量。)

var states = Array(2);
states[0] = Array.create("int",1);
states[0][0] = android.R.attr.state_pressed;
states[1] = Array.create("int",1);
states[1][0] = android.R.attr.state_enabled;

结果:

Cannot marshal JavaScript argument [I@8033d59,[I@1e86d1e at index 0 to Java type.

2 个答案:

答案 0 :(得分:2)

您是否尝试使用Array.create()?在documentation中,它表示"有时您必须从JavaScript创建Java数组。对于这种情况,我们在内置的JavaScript Array对象中添加了方法create。"

这句话描述了你想要做的事情IMO。

答案 1 :(得分:0)

这有效:

var states = Array.create("[I",2);
states[0] = Array.create("int",1);
states[0][0] = android.R.attr.state_pressed;
states[1] = Array.create("int",1);
states[1][0] = android.R.attr.state_enabled;

此处有更多信息:Java to JavaScript Conversion: Array