Как я могу вызвать диалог из Webview и вернуть целочисленную переменную обратно в javascript? - PullRequest
0 голосов
/ 14 февраля 2012

Я хотел бы создать диалоговую форму с одним выбором (аналогично тому, что вы получаете при использовании setSingleChoiceItems в конструкторе диалоговых окон), которая вызывается из javascript из веб-представления и возвращает свой результат в javascript.

1) Насколько я понимаю, onJsAlert позволит реализовать вызов диалога, но он возвращает только true или false в javascript. Есть ли обходной путь, который позволяет этому методу возвращать целое число?

2) Тег выбора создаст такой диалог на маленьких экранах, возможно ли вызвать его вручную из javascript? Я не могу использовать тег выбора в основном потому, что на моей странице есть много элементов, которые вызывают это диалоговое окно, поскольку наличие целого списка в теге выбора для каждой отдельной записи создает огромные накладные расходы.

Приношу свои извинения за то, что не предоставил никакого кода, но я застрял здесь в концепции - я опубликую работающее решение, если смогу получить некоторые подсказки о том, как это сделать.

Ответы [ 2 ]

1 голос
/ 14 февраля 2012

в веб-просмотре вы можете использовать метод shouldOverrideUrlLoading для запуска диалога.

Например: если вы хотите запустить окно оповещения, при нажатии на ссылку

в 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 + "\")");

здесь есть функция JavaScript, которая загружается в webview

function changeSize(fontSize){
$('#article').css('font-size', fontSize);
$('#articleDes').css('font-size', fontSize);
return false;
}
1 голос
/ 14 февраля 2012

Не могли бы вы просто позволить иметь единственную строку 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) метод для более тесной интеграции между вашим веб-приложением и приложением для Android.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...