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