Android JS 交互出現 Uncaught Error: Error calling method on NPObject


由於HTML5的功能越來越強大,native app的一些功能逐步被html頁面代替,不可避免的JS交互也用到的也越來越多.在第一個版本向第二個版本迭代的過程中卻發生了莫名其妙的問題,第一個版本JS調用的方法如下:
1 public void gotoAdvisorDetail(String id) {
2      if (!TextUtils.isEmpty(id)) {
3           Intent intent = new Intent(mContext, Detail.class);
4           intent.putExtra("id", id);
5           mContext.startActivity(intent);
6       }
7 }

實現的功能就是根據id 打開對應對象的詳情界面

在第二個版本中的需求是增加一個參數,跳轉到詳情界面的第幾個Fragment,直接增加參數方法改為如下:

public void gotoAdvisorDetail(String advisor_id,String position) {
        if (!TextUtils.isEmpty(advisor_id)) {
            Intent intent = new Intent(mContext, Detail.class);
            intent.putExtra("advisor_id", advisor_id);
            int pos = Integer.parseInt(position);
            intent.putExtra("position", pos);
            mContext.startActivity(intent);
        }
    }

但是這個時候就出現了題目所示的異常:6-13 15:37:14.717: E/Web Console(19235): Uncaught Error: Error calling method on NPObject. at http://192.168.1.11/mobile/..........js:428

莫名其妙啊,我只是多加了個參數而已,后來在stackoverflow上搜出的解釋大多是Android線程安全的問題,創建子線程進行操作,於是代碼改成了下面這樣問題就解決了

public void gotoAdvisorDetail(final String advisor_id, final String position) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                if (!TextUtils.isEmpty(advisor_id)) {
                    Intent intent = new Intent(mContext, Detail.class);
                    intent.putExtra("advisor_id", advisor_id);
                        if (!TextUtils.isEmpty(position)) {
                            Logger.i("gotoAdvisorDetail position = " + position);
                            int pos = Integer.parseInt(position);
                            intent.putExtra("position", pos);
                        }
                    mContext.startActivity(intent);
                }
            }
        }).start();

    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM