Blackberry JDE GPS getLocation () LocationException - PullRequest
1 голос
/ 02 октября 2009

Мне нужно добавить функцию GPS в существующее приложение Blackberry, которое я написал. Я пишу отдельный класс под названием CurrentLocation и включаю метод для установки различных переменных местоположения, которые меня интересуют, используя blackberry GPS в сочетании с веб-сервисами обратного геокодирования Google. Все работает прекрасно, то есть, пока я не попытаюсь создать экземпляр моего нового класса в моем основном приложении.

Независимо от того, что я делаю, я получаю исключение LocationException! .getLocation () не работает!

Это действительно смущает меня, потому что, если я создаю экземпляр своего класса в тестовом приложении hello world, оно работает просто отлично.

Существуют ли ограничения на то, где вы можете создавать экземпляры классов? Я не сталкивался ни с одним из предыдущих классов, которые я написал. В этом случае я создаю экземпляр своего класса CurrentLocation в слушателе (таким образом, пользователь делает длинные gps и веб-вызовы только тогда, когда они этого хотят). Я также пытался создать его на экранах. Я пытался просто потрошить класс и использовать вызов метода, но это тоже не работает.

Есть ли что-то, чего мне здесь не хватает?

http://pastie.org/639545

Есть ссылка на класс, который я делаю,

А вот слушатель, от которого я пытаюсь создать экземпляр. Я нахожусь в потоке событий, потому что я думал, что это может помочь (но я получаю то же исключение, независимо от того, делаю я это или нет).

FieldChangeListener listenerGPS = new FieldChangeListener() {
        public void fieldChanged(Field field, int context) {
            UiApplication.getUiApplication().invokeLater(new Runnable() {
                public void run() {
                    CurrentLocation loc = new CurrentLocation();
                    if (loc != null){
                        country = loc.getCountry();
                        city = loc.getCity();
                        state = loc.getState();
                        road = loc.getRoad();
                        zip = loc.getZip();
                    }
                    }

            });

        }
    };

Что мне здесь не хватает?

1 Ответ

2 голосов
/ 02 октября 2009

Хорошо, я понял. По-видимому, вы не можете вызывать getLocation () в eventThread (не только invokeLater, но и любого слушателя). Так что теперь я получаю координаты в потоке за пределами события и беспокоюсь о Google отдельно.

...