将数组从Activity传递给Javascript

时间:2011-11-15 15:25:31

标签: javascript android webview

我知道有几个类似于这个的线程,但他们实际上并没有回答上述问题。 第一个问题:只有原语可以通过才是真的吗? (String,boolean,...) 第二个问题:如果是这样的话。我的活动中有一个String数组,我需要它来填充我的WebView中的html表,显然我需要使用Javascript接口来执行此操作。所以问题是:我怎么能这样做?我是否需要在我的活动中创建一个字符串,将其传递给JS并重新创建数组?

3 个答案:

答案 0 :(得分:2)

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

通过Javascript界面​​将其发送到WebView,并使用JS中的JSON.parse(Stringname)重新创建数组。

祝福, 添

答案 1 :(得分:1)

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

这就是我所做的。

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

}

其中array是'[“string1”,“string2”]'和jsonObj是'{attr:1,attr2:“myName”}'

答案 2 :(得分:1)

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

var strings = get.list(); // long string from activity.
var item1 = strings.split("=")[0];
var item2 = strings.split("=")[1];

... 或者你可以去图书馆