我正在使用以下代码在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");
}
我是这个平台的新手,也是javascripting。
我做错了什么? 有人可以帮忙吗?
提前完成。
答案 0 :(得分:6)
看起来你滥用了addJavascriptInterface()。该方法允许您将一些java对象公开给javascript。然后,您可以使用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()'并且你的字段变量将被设置。
请注意,片段可能不准确,我直接从脑中输入:)但你应该得到原则。希望有所帮助。