0

明確にするために:これは、GPS_PROVIDERを使用してユーザーの位置の座標を取得することを目的としたAndroidアプリケーションのアクティビティです。アクティビティには、ボタンを押すと、座標データを取得するメソッドを開始するボタンが含まれています。問題は、以前に既知の位置情報がない場合(つまり、電話が最近リセットされた場合)にアプリケーションがクラッシュすることです。たとえば、マップアプリケーションを開いて現在地を特定し、次に自分のアプリケーションを再度開いてこのメソッドを実行すると、意図したとおりに機能します。私の質問は、なぜこのクラッシュが発生するのか、および/またはこのクラッシュの発生を防ぐにはどうすればよいのかということです。助けてくれてありがとう。

このメソッドは、ボタンが押されたときに実行されます。座標が適切に検出されると、呼び出し元のアクティビティに対してインテント応答が生成されます。

protected void getCurrentLocation() {
    Location location = null;
    try {
        location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
    } catch (IllegalArgumentException iae) { }

    if (location != null) {
        longV = location.getLongitude();
        latV  = location.getLatitude();
        response(longV, latV);
    } else {
        getCurrentLocation();
    }
4

1 に答える 1

4

StackOverflowExceptionを受け取っていると思います。これlocationnull、まったく同じ関数を呼び出すと、不定のループが作成されるためです...

最後に知っている場所がない場合は、新しい場所をリクエストする必要があります。(getLastKnownLocation()何度呼んでも自然に変わることはありません。)

于 2012-10-29T20:00:04.347 に答える