1

我需要将 GPS 功能添加到我编写的现有黑莓应用程序中。我编写了一个名为 CurrentLocation 的独立类,并包含一个方法来设置我关心的各种位置变量,方法是将黑莓 GPS 与谷歌的反向地理编码网络服务结合使用。一切都很顺利,也就是说,直到我尝试在我的主应用程序中实例化我的新类。

无论我做什么,我都会得到 LocationException!.getLocation() 不起作用!

这真的让我很困惑,因为如果我在一个测试 hello world 应用程序中实例化我的类,它就可以正常工作。

实例化类的位置是否有限制?我以前写过的课程都没有遇到过。在这种情况下,我在侦听器中实例化我的 CurrentLocation 类(因此用户只在需要时才进行冗长的 gps 和 web 调用)。我也尝试在屏幕中实例化它。我已经尝试过删除类并使用方法调用,但这也不起作用。

我在这里完全缺少什么吗?

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();
                    }
                    }

            });

        }
    };

我在这里想念什么?

4

1 回答 1

2

好的,我明白了。显然,您不能在 eventThread 中调用 getLocation() (不仅是 invokeLater,而是任何侦听器)。所以现在我正在做的是在事件之外的线程中获取坐标,并分别担心谷歌。

于 2009-10-02T17:11:55.420 回答