gpt4 book ai didi

javascript - 有没有办法使用 WebView 将 JavaScript 中的对象(类实例)提取到 Android?

转载 作者:行者123 更新时间:2023-11-29 02:12:24 25 4
gpt4 key购买 nike

我正在尝试提取在 JavaScript 中创建的对象和列表,以便在 Android 应用程序中使用它们。 (我已成功提取单个值。)我正在使用 addJavaScriptInterface 方法来实现它。

在 test.html 中,我有以下脚本代码:(我试过没有“.slice()”但也没有用)

function getList(){
var categoryTotals = {};
categoryTotals[0] = 1;
categoryTotals[1] = 2;
categoryTotals[2] = 3;
return categoryTotals.slice();
}

WebViewClient 的 onPageFinished 方法包含以下代码:

mWebView.loadUrl("javascript:window.HTMLOUT.callAndroidList(getList());");

我的 JavaScriptInterface 具有以下功能:

public void callAndroidList(final List list){
myList = list;
Log.d("ListTest" , "LIST 1 >>>>>>>>>>>>> " + ListTest.myList.get(0));
Log.d("ListTest" , "LIST 2 >>>>>>>>>>>>> " + ListTest.myList.get(1));
Log.d("ListTest" , "LIST 3 >>>>>>>>>>>>> " + ListTest.myList.get(2));
}

当我运行这段代码时,我得到 NullPointerException,指出 callAndroidList 的参数 list 为空。我对 JavaScript 的处理不多,所以我认为这可能与 JavaScript 对象实例的创建和删除有关。

你能帮帮我吗?提前致谢。

最佳答案

> function getList(){ 
> var categoryTotals = {};

这将创建一个对象,我想你的意思是创建一个数组,所以也许应该是:

      var categoryTotals = [];

.

>     categoryTotals[0] = 1;
> categoryTotals[1] = 2;
> categoryTotals[2] = 3;
> return categoryTotals.slice();

由于您正在创建一个具有数字属性的对象,而不是一个数组,因此它没有slice 方法。将 categoryTotals 初始化为数组应该可以解决这个问题。

顺便说一句,使用slice 返回数组的副本似乎没有任何意义。既然 categoryTotals 没有用于任何其他用途,为什么不直接返回它呢?

关于javascript - 有没有办法使用 WebView 将 JavaScript 中的对象(类实例)提取到 Android?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6514760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com