gpt4 book ai didi

javascript - 从 JavaScript 调用 Java 方法并将值返回给 JavaScript

转载 作者:搜寻专家 更新时间:2023-11-01 09:26:07 24 4
gpt4 key购买 nike

关于从 Javascript 调用 Java 类方法的 SO 问题和其他文章很少,但它们都涉及返回类型为 void 的 java 方法。

这是我想要实现的目标:WebView 中要显示 2 个字符串 - 说。但它们需要本地化,因此我想从 Java 方法中获取字符串值,而不是为每个语言环境使用多个 JS。

这是代码示例:Java 类

onCreate(){
//Some code
contentWebView.addJavascriptInterface(new CalculatorJavaScriptCallInterface(), "calculatorjavascriptcallinterface");
//Some code
}

String localizedString = "";
private class CalculatorJavaScriptCallInterface {
CalculatorJavaScriptCallInterface() {
}

@JavascriptInterface
public String getLocalizedString(final int stringId) {
localizedString = getResources().getString(stringId);
Toast.makeText(getActivity(), "localizedString :: " + localizedString, Toast.LENGTH_SHORT).show();

return localizedString;
}
}

Javascript 文件

  function Checkboxpicker(element, options) {
//Some code
this.options = $.extend({}, $.fn.checkboxpicker.defaults, options, this.$element.data());
}
$.fn.checkboxpicker.defaults = {
//EXISTING STRINGS
//offLabel: 'No',
//onLabel: 'Yes',
offLabel: window.calculatorjavascriptcallinterface.getLocalizedString("Consult.JSSupport.checkbox.selected"),
onLabel: window.calculatorjavascriptcallinterface.getLocalizedString("Consult.JSSupport.checkbox.notSelected"),
};

当我运行上面的代码时,我得到空白字符串作为输出。

这里有一些注意事项:

  1. 如果我使用这个 Javascript 就可以正常使用硬编码字符串
  2. 各自的 stings 已经定义在string.xml
  3. 我尝试在中使用 calculatorjavascriptcallinterface驼峰和小写均有
  4. 我试过使用和不使用window。调用Java方法
  5. 尝试从 Java 返回硬编码值方法 - 它是这样工作的

任何建议将不胜感激。提前致谢!


编辑即使字符串存在于 strings.xml 中,我仍收到以下错误:

No package identifier when getting value for resource number 0x00000000
android.content.res.Resources$NotFoundException: String resource ID #0x0

最佳答案

获取具有正确 ID 的字符串似乎有问题。如下更改您的 getLocalizedString:

@JavascriptInterface
public String getLocalizedString(final String stringId) {
localizedString = getResources().getString(getResources().getIdentifier(stringId,"string",getContext().getPackageNam‌​e()));
Toast.makeText(getActivity(), "localizedString :: " + localizedString, Toast.LENGTH_SHORT).show();

return localizedString;
}

关于javascript - 从 JavaScript 调用 Java 方法并将值返回给 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50522891/

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