簡體   English   中英

有沒有辦法使用 WebView 提取 JavaScript 到 Android 中的對象(類實例)?

[英]Is there a way to extract objects (class instances) in JavaScript to Android using WebView?

我正在嘗試提取在 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 有以下 function:

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 是 null。 我沒有處理太多 JavaScript 所以我認為這可能與 JavaScript object 實例的創建和刪除有關。

你能幫幫我嗎? 提前致謝。

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

這將創建一個 object,我認為您的意思是創建一個數組,所以也許應該是:

      var categoryTotals = [];

.

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

由於您正在創建具有數字屬性而不是數組的 object,因此它沒有切片方法。 categoryTotals初始化為數組應該可以解決這個問題。

順便說一句,使用slice來返回數組的副本似乎沒有任何意義。 既然categoryTotals不用於其他任何事情,為什么不直接返回呢?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM