gpt4 book ai didi

javascript - addJavascriptInterface 在 Android 中不返回字符串值

转载 作者:行者123 更新时间:2023-11-28 12:48:55 24 4
gpt4 key购买 nike

我使用以下代码在 Android 中的 JavaScript 文件中提取字符串变量:

这是我的 JavaScript 文件:

<script language="javascript">

//EDIT:
clsVariable = "vikrant";

function refuseClick(){
clsVariable = "vikrant";
refuse.performClick();
document.getElementById("no").value = "Refuse";
}

</script>

<button type="button" id="no" onClick="refuseClick();">Je refuse</button>

</div>
</body>
</html>

在我的 Android 类中,我在单击按钮时编写了以下方法。我从 JavaScript 文件调用此按钮单击事件:

    refuse.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
Log.v(LOG_TAG, "variable=" + clsVariable); //This shows me null
}
});
wbvw = (WebView) findViewById (R.id.webvw);

wbvw.setWebViewClient(new HelloWebViewClient());
wbvw.getSettings().setJavaScriptEnabled(true);

WebSettings ws = wbvw.getSettings();
ws.setJavaScriptEnabled(true);
wbvw.addJavascriptInterface(clsVariable, "clsVariable");
wbvw.loadUrl("http://www.sbc.co.in/projects/AndroidTest.html");
}

我是这个平台的新手,也是编写 JavaScript 的新手。

我做错了什么?

最佳答案

看来您滥用了 addJavascriptInterface()。该方法允许您向 javascript 公开一些 java 对象。然后,您可以使用 javascript 调用该对象的方法,这些调用将被转移到“真正的”java 对象。例如,您可以声明这样一个嵌套类来访问您的java字段:

class ClsAccessor {
public void setValue(String value){
YourOuterClassName.this.clsVariable = value;
}
}

然后将类的实例传递给 addJavascriptInterface() 方法:

wbvd.addJavaScriptInterface(new ClsAccessor(), "accessor");

然后,要为类字段设置值,您需要从 javascript 调用 accessor 对象上的 setValue() 方法(例如在单击处理程序中):

accessor.setValue('vikrant');

这将导致调用 java 'setValue()' 并且您的字段变量将被设置。

请注意, fragment 可能并不准确,我是直接从脑海中输入它们的:)但您应该了解原理。希望有帮助。

关于javascript - addJavascriptInterface 在 Android 中不返回字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4243323/

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