WebView + java + SQLite

Ответить
laandrew
Сообщения: 53
Зарегистрирован: 02 апр 2012, 09:40

WebView + java + SQLite

Сообщение laandrew » 20 апр 2012, 13:10

Здравствуйте!

Прошу помощи в коде по следующему вопросу:

Есть база SQLite. Там две таблицы. Таблица: Страна и таблица: Города

Я получаю путем запроса данные из таблицы Страна (страна это ссылка), формирую html с названиями стран и путем webView.loadData загружаю на экран. При нажатии на Страну, я должен получить данные (какая страна) и в зависимости от страны сделать запрос ко второй таблице (Города) и получить данные. Потом сформировать на основании городов html и опять загрузить на экран.

Как сделать это не могу понять. Прошу помощи в написании кода.

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: WebView + java + SQLite

Сообщение KamiSempai » 20 апр 2012, 21:48

Пока я искал как можно избавиться от проблем с прозрачным WebView, наткнулся на описание использования JavascriptInterface.
Принцип его работы примерно следующий:
Описывается класс с public методами. WebView добавляется JavascriptInterface с помощью метода addJavascriptInterface, где в качестве одного из параметров выступает объект того самого класса, который мы описали. Теперь Java скриптам стали доступны все public методы из описанного класса.

Можно на нажатие по стране, назначить скрипт по вызову метода который заставить WebView отправить запрос на нужную страницу.
Вот ссылка на статью по его использованию: Статья по использованию JavascriptInterface
Она на английском, но там и без перевода все понятно.

PS: Кстати, там используется Handler. Может как раз это имел в виду тот человек, который тоже мучился с прозрачностью WebView?
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

laandrew
Сообщения: 53
Зарегистрирован: 02 апр 2012, 09:40

Re: WebView + java + SQLite

Сообщение laandrew » 21 апр 2012, 22:38

Я ознакомился со статьей. Но есть вопросы.

Вот код часть кода, взятый со статьи:
final class MyJavaScriptInterface {
MyJavaScriptInterface() {
}
public String add(final String name) {
final String msg = null;
handler.post(new Runnable() {
public void run() {
//addOrRemove(name, true);
msg = "Andrew Ivanoff"+name;
Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show();
}
});
return msg;
}
}

Мне нужно обратно вернуть msg, но eclipse дает ошибку на строку: msg = "Andrew Ivanoff"+name;

Подскажите, пожалуйста, где в коде кроется ошибка. Иначе я не смогу воспользоваться handler.

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: WebView + java + SQLite

Сообщение KamiSempai » 22 апр 2012, 19:00

По тому, что msg был объявлен как final и ему уже было присвоено значение: "final String msg = null;"
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

laandrew
Сообщения: 53
Зарегистрирован: 02 апр 2012, 09:40

Re: WebView + java + SQLite

Сообщение laandrew » 25 апр 2012, 23:17

Убрал final.

Теперь ругается (Ошибка: Cannot refer to a non-final variable msg inside an inner class defined in a different method) на строки:
msg = "Andrew Ivanoff"+name;
Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show();

Рекомендует поставить final обратно.

Что делать?

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: WebView + java + SQLite

Сообщение KamiSempai » 26 апр 2012, 07:36

Думаю, стоит избавиться от Runnable и делать все действия в функции.
Кстати, Вы учитываете, что эта функция будет вызываться в скрипте и значение будет возвращать тоже в скрипт?

Я тут подумал, а не проще ли сразу выдавать страницу с ссылками на нужные страницы?
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

laandrew
Сообщения: 53
Зарегистрирован: 02 апр 2012, 09:40

Re: WebView + java + SQLite

Сообщение laandrew » 26 апр 2012, 14:04

KamiSempai писал(а): Кстати, Вы учитываете, что эта функция будет вызываться в скрипте и значение будет возвращать тоже в скрипт?
Да, учитываю, но у меня это не получается сделать.
KamiSempai писал(а): Я тут подумал, а не проще ли сразу выдавать страницу с ссылками на нужные страницы?
Я сейчас так делаю, но предыдущая страница остается на экране. Когда в css указываю для <body> margin 0;, то все OK. Стоит изменить на другое значение не равное 0, сразу на экране идет "залипание" предыдущего запроса. Почему так происходит не могу найти.

Ответить