2011-01-24 15 views
0

私は緯度経度の長いペアをジオロケーションにしようとしています。例外がないときはうまくいく。例外をキャッチできません(GLS FAILED STATUS 20)

Logcat:

GLS Failed With Status 20 

コードは次のとおりです。

//TAG GEOCODING METHOD 
    public Address getAddressForLocation(Context context, Location location) throws IOException { 

    Address a = null; 
    try{ 
     if (location == null) { 
      a=null; 
     } 
     double latitude = location.getLatitude(); 
     double longitude = location.getLongitude(); 
     int maxResults = 1; 


     Geocoder gc = new Geocoder(context, Locale.getDefault()); 
     List<Address> addresses = gc.getFromLocation(latitude, longitude, maxResults); 


     if (addresses.size() == 1) { 
      a=addresses.get(0); 
     } else { 
      a=null; 
     } 
    }catch (Exception e){ 
     Log.w("EXCEPTON!", "Exception Caught in geocode"); 
     a=null; 
    } 
    return a; 
    } 

コールはまた、try/catchブロックに包まれています。

@Override//TAG On Location Changed 
    public void onLocationChanged(Location arg0) { 
//SET ALL VALUES 
      dlat = arg0.getLatitude(); 
      dlon = arg0.getLongitude(); 

      delev = arg0.getAltitude() * 3.2808399; 
      delev = round(delev, 2); 

//GET THE ADDRESS 
       try { 
       addy = getAddressForLocation(this,arg0); 
       } catch (Exception e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
       } 
       _lastaddy = _addy; 
       //DISPLAY ALL INFORMATION 
       _addy = addy.getAddressLine(0); 
        LONGBOX.setText(String.valueOf(dlon)); 
        LATBOX.setText(String.valueOf(dlat)); 
if(_addy!=_lastaddy){ 
         ADDRESS.setText(_addy); 
} 

        } 

残りのlogcatは以下のとおりです。これを助けてくれれば幸いです。私はこの例外をキャッチすることができず、このコードをあまりにも長く見て、私が間違っていたことをまだ知りません。

LOGCAT:

LocationMasfClient reverseGeocode(): GLS failed with status 20 
AndroidRuntime  Shutting down VM 
dalvikvm   threadid=1: thread exiting with uncaught exception (group=0x400208b0) 
AndroidRunTime  FATAL EXCEPTION: main 
AndroidRunTime  java.lang.NullPointerException 

答えて

1

私はこの問題は、あなたが例外をキャッチしたが、その後で、だから、getAddressForLocation

catch (Exception e){ 
     Log.w("EXCEPTON!", "Exception Caught in geocode"); 
     a=null; 
    } 
    return a; 

に(使用しようと最終的にと)ヌルAddressオブジェクトを返すということだと思いますこのアドバイスはnullになります:

addy = getAddressForLocation(this,arg0); 

あなたがaddyを使うと、あなたはあなたはそれを使用する前にメアドがnullであるかどうかを確認する必要がある、またはスローのいずれかNullPointerException

_addy = addy.getAddressLine(0); 

Exceptionあなたはこれがまさにその理由であるgetAddressForLocationにキャッチし、onLocationChange

+0

でそれを処理します。私はそれを見ることができませんでした。それを私に指摘してくれてありがとう。 – Phobos

関連する問題