1

私が作成した既存の Blackberry アプリケーションに GPS 機能を追加する必要があります。CurrentLocation というスタンドアロン クラスを作成し、Blackberry GPS を Google のリバース ジオコーディング Web サービスと組み合わせて使用​​することで、関心のあるさまざまな位置変数を設定するメソッドを含めます。つまり、メイン アプリケーションで新しいクラスをインスタンス化しようとするまでは、すべてがうまく機能しています。

何をしても 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 に答える