我想在 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.
答案 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;