对于你们中的许多人来说,这个问题听起来很基本。但请看看我的实际问题。我在我的Android应用程序中动态设置我的WebView的内容。 我可以在其中设置文本而不会有任何问题,但我的问题是我需要动态添加一些按钮到我的WebView中,如下所示
for (Address address : (List<Address>) childDataList.get(3)) {
if (!address.getName().equalsIgnoreCase("")) {
text.append("<b>").append(address.getName()).append("</b>");
}
/* dynamic button in html */
//text.append("<br>").append("<a href=\"http://www.google.com\" target=\"_parent\"><button>Navigation </button></a>"); // this is working
text.append("<br>").append("<button type=\"button\" onclick=\"ok.performClick();\">Navigation</button>"); // not able to make it work
text.append("<br><br>");
}
我正在使用以下代码调用此方法
WebSettings ws = wv.getSettings();
ws.setJavaScriptEnabled(true);
wv.addJavascriptInterface(new Object()
{
public void performClick()
{
//Print Toast
}
}, "ok");
然而,performClick()方法没有调用按钮单击,而它完全正常工作直接url。所以,如果你们有任何建议或链接,请提供给我。
我关注了android html button onclick event和webviews html button click detection in activityjava code以及detect click on html button through javascript in android webview链接,但我无法完成我的要求。
我在android代码中以编程方式设置我的webview文本而不是javascript。因此,请在将其标记为重复之前查看我的问题,或者如果我遗漏了某些内容,请指导我。
答案 0 :(得分:0)
您需要在Java代码中使用performClick
(doc)注释@JavascriptInterface
:
wv.addJavascriptInterface(new Object()
{
@JavascriptInterface
public void performClick()
{
//Print Toast
}
}, "ok");
此外,请确保在加载页面之前致电addJavascriptInterface
。