1

Google マッピングの目的で、出発地と目的地の gps 座標を含む文字列を作成しようとしています。最初に行う必要があるのは、現在地の GPS 座標を取得することです。これが原点であるためです。次に、これらの座標を、ルートを取得するために使用するより大きな文字列に連結する必要があります。

これらの座標を取得するコードと、それらを正しい文字列形式に連結するコードもあります。ただし、私の問題は、文字列構築コードが最初に実行されていることです。文字列はまだ処理されていない gps 座標を参照しているため、null ポインターの問題が残ります。

ここにあります。gotLocation() メソッドは、この投稿のアドバイスの実装から来ています。

Public class DirectionsActivity extends Activity {

    String myLat, myLng;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Parser parser;

        LocationResult locationResult = new LocationResult(){
            @Override
            public void gotLocation(final Location location){
                try {
                    Double lat = location.getLatitude();
                    Double lng = location.getLongitude();
                    if (lat != 0.0 && lng != 0.0) {                      
                        myLat = Double.toString(lat);
                        myLng = Double.toString(lng);
                        String gps_location = myLat + " " + myLng;
                        Toast.makeText(getBaseContext(), "First Message", Toast.LENGTH_SHORT).show();
                    }
                }catch (Exception e) {

                }
            }
        };

        MyLocation myLocation = new MyLocation();
        myLocation.getLocation(this, locationResult);

        Toast.makeText(getBaseContext(), "Second Message", Toast.LENGTH_LONG).show();

        buildString();

        setContentView(R.layout.activity_directions);

    }

これを実行したときのトースト出力は、「2 番目のメッセージ」の後に「最初のメッセージ」が続きます。それらは逆の順序で表示されます。

4

1 に答える 1

0

場所の取得は非同期操作です。システムから回答を取得する時間を制御することはできません。

トーストが表示される前に、どうすれば衛星放送や携帯電話のマットを確実に見つけることができますか? :)

于 2013-05-16T20:47:37.997 に答える