上下文将数据设置为字符串并传递给 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 );
我尝试将数据从数据库传递到 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 );