如何从Webview调用I对话框并将整数变量返回到javascript中?

时间:2012-02-14 08:10:54

标签: android dialog webview

我想创建一个单选对话框表单(类似于在Dialog构建器上使用setSingleChoiceItems时得到的),它是从we​​bview中调用javascript并将其结果返回给javascript。

1)我的理解是onJsAlert允许实现对话调用,但它只返回javascript的true或false。是否有任何解决方法允许此方法返回整数?

2)select标签会在小屏幕上创建这样的对话框,是否可以从javascript手动调用?我不能主要使用select标签,因为我的页面上有很多项会调用此对话框,将每个条目的选择标记中的整个列表都会产生巨大的开销。

我很抱歉没有提供任何代码,但我坚持这里的概念 - 如果我能得到一些关于如何做到这一点的提示,我会发布一个有效的解决方案。

2 个答案:

答案 0 :(得分:1)

难道你不能让你的select标签中包含你想要的选项的单个js字符串。然后,当加载页面时,在应该具有选项的所有选择标记上设置innerHtml。这样你就不需要与Android应用程序进行任何特殊的集成。使用jQuery的东西:

var options = '<option value="foo">Foo</option><option value="bar">Bar</option>'

$(document).ready(function() {
    $(select).html(options);
});

没有测试过,但上面的内容应该可以使用。

否则,您可以使用addJavascriptInterface(Object, String)方法在您的webapp和Android应用程序之间进行更紧密的集成。

答案 1 :(得分:1)

在webview中,你可以使用“shouldOverrideUrlLoading”方法来激活Dialog。

例如:如果要点击某个链接

,则需要触发警告框

in html:

<a href='mycall:00'>click here<a>

在java中

public boolean shouldOverrideUrlLoading(WebView view, String url){
// if url is eqal to "mycall:00" launch the dialog box

}

将数据传递给javascript

  webview.loadUrl("javascript:changeSize(\"" + fontSize + "\")");

这是在webview中加载的JavaScript函数

function changeSize(fontSize){
$('#article').css('font-size', fontSize);
$('#articleDes').css('font-size', fontSize);
return false;
}