将数组从活动传递到Javascript

将数组从活动传递到Javascript,javascript,android,webview,Javascript,Android,Webview,我知道有几条类似于这条的线索,但它们实际上并没有回答上述问题。 第一个问题:是否只有原语可以被传递?(字符串,布尔值,…) 第二个问题:如果是这样的话。我的activiy中有一个字符串数组,我需要它来填充WebView中的html表,显然我需要使用Javascript接口来完成这项工作。所以问题是:我该怎么做?我是否需要在我的活动中创建一个字符串,将其传递给JS,然后在那里重新创建数组 您可以使用JSON作为数据格式。一个简单的方法是使用像GSON这样的库,这样可以很容易地将具有自己对象类型的A

我知道有几条类似于这条的线索,但它们实际上并没有回答上述问题。 第一个问题:是否只有原语可以被传递?(字符串,布尔值,…)
第二个问题:如果是这样的话。我的activiy中有一个字符串数组,我需要它来填充WebView中的html表,显然我需要使用Javascript接口来完成这项工作。所以问题是:我该怎么做?我是否需要在我的活动中创建一个字符串,将其传递给JS,然后在那里重新创建数组

您可以使用JSON作为数据格式。一个简单的方法是使用像GSON这样的库,这样可以很容易地将具有自己对象类型的ArrayList转换为字符串

通过Javascript接口将其发送到WebView,并在JS中使用JSON.parse(Stringname)重新创建数组

致以最良好的祝愿,
Tim

您的选择是使用字符串公开方法,然后可以使用JSONObject或JSONArray解析字符串并相应地使用它

这就是我所做的

@JavascriptInterface
public void passJSON(String array, String jsonObj) throws JSONException
{
    JSONArray myArray = new JSONArray(array);
    JSONObject myObj = new JSONObject(jsonObj);     
    ...

}
其中数组是“[“string1”,“string2”]”,jsonObj是“{attr:1,attr2:“myName”}”

“我是否需要在我的活动中创建字符串,将其传递给JS,然后在那里重新创建数组?” 我就是这样解决的;在构建字符串时,我给列表中的每个项目添加了一个特殊字符,然后在JS中将其拆分

var strings = get.list(); // long string from activity.
var item1 = strings.split("=")[0];
var item2 = strings.split("=")[1];
。。。。
或者你可以去图书馆

Danke Tim。我要试一试。还有人建议我试试JQuery。你觉得怎么样?我真的很喜欢WebView中Android上的jQuery(目前正在进行一个这样的项目)。可以操纵DOM树。有问题吗?