将数组从Activity传递给Javascript

Passing Array from Activity to Javascript

本文关键字:Javascript Activity 数组      更新时间:2023-09-26

我知道有几个类似的线程,但他们实际上并没有回答上面的问题。第一个问题:真的只有原语可以传递吗?(字符串、布尔值、…)第二个问题:如果是这样的话。我在我的活动中有一个字符串数组,我需要它来填充我的WebView中的html表,显然我需要使用Javascript接口来这样做。问题是,我怎么能做到呢?我需要在我的活动中创建一个字符串,把它传递给JS,一旦有重新创建数组吗?

您可以使用JSON作为数据格式。一个简单的方法是使用像GSON http://code.google.com/p/google-gson/这样的库,它可以很容易地将具有自己对象类型的ArrayList转换为string。

通过javascript接口发送给你的WebView,并在JS中使用JSON.parse(Stringname)来重新创建你的数组。

最好的祝愿,蒂姆。

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

这就是我所做的。

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

where array为'["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];

…或者你可以选择library