上下文将数据设置为字符串并传递给 javascript webview,仅适用于 "numbers"

context set data to strings and pass on javascript webview, work only with "numbers"

我尝试将数据从数据库传递到 webview 表单,目前可以工作,但如果我只添加数据库中的数字,例如代码是 123,区域是 567,如果代码是 123-4 并且区域是法国,webview 没有任何显示 html...任何帮助,我想要 webview 上的数字和文字...???

MainActivity.java

void setCodeAndRegion(final String code, final String region) {
    webview.post(new Runnable() {
        @Override
        public void run() {
            webview.evaluateJavascript("javascript:setCodeAndRegion(" + code + "," + region + ");", null);
        }
    });
}

popupdialog.java

listRegion.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            final String region = (String) listRegion.getItemAtPosition(position);
            SQLiteDatabase database = context.pdfDatabaseManager.getReadableDatabase();
            final Cursor c = database.rawQuery("Select * From " + PDFDatabaseManager.DATABASE_REGION_TABLE + " WHERE "+ PDFDatabaseManager.KEY_REGION +"='"+region+"'", null);
            String code = "";
            while (c.moveToNext())
                code = c.getString(1);

            c.close();
            context.setCodeAndRegion(code,region);
            a.dismiss();
        }
    });

.html

 var setCodeAndRegion = function(code, region){
          document.getElementById('test1').value = code;
          document.getElementById('test2').value = region;
          alert (region);
      }

问题可能出在您在函数 setCodeAndRegion 中作为参数传递的值。 由于它们是 Strings(至少对于该地区而言),因此您需要 引号"').

void setCodeAndRegion(final String code, final String region) {
    webview.post(new Runnable() {
        @Override
        public void run() {
            webview.evaluateJavascript("javascript:setCodeAndRegion('" + code + "', '" + region + "');", null);
        }
    });
}

没关系:

"javascript:setCodeAndRegion('" + code + "', '" + region + "');"

这不会被javascript很好地解释:

"javascript:setCodeAndRegion("+ code + ", " + region + " );"

只是因为 javascript 将无法将其识别为值。会变成这样:

setCodeAndRegion(123-5, England );