2011-04-29 6 views
2

Je continue d'obtenir que le géocodeur soit indéfini avec le code suivant. J'essaye d'obtenir simplement l'adresse d'un endroit du lat et long. La ligne Geocoder geocoder = new Geocoder (this, Locale.ENGLISH); revient toujours comme non raffiné.Le constructeur Geocoder() est indéfini

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    /* Use the LocationManager class to obtain GPS locations */ 
    LocationManager mlocManager = 
    (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
    LocationListener mlocListener = new MyLocationListener(); 
    mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 600000, 1000, mlocListener); 

/* Class My Location Listener */ 
public class MyLocationListener implements LocationListener 
{ 
@Override 
public void onLocationChanged(Location loc) 
{ 
loc.getLatitude(); 
loc.getLongitude(); 
Geocoder geocoder = new Geocoder(this, Locale.ENGLISH); 
currentLatitude = loc.getLatitude(); 
currentLongitude = loc.getLongitude(); 

try { 
     List<Address> addresses = geocoder.getFromLocation(currentLatitude, currentLongitude, 1); 

     if(addresses != null) { 
     Address returnedAddress = addresses.get(0); 
     StringBuilder strReturnedAddress = new StringBuilder("Address:\n"); 
     for(int i=0; i<returnedAddress.getMaxAddressLineIndex(); i++) { 
     strReturnedAddress.append(returnedAddress.getAddressLine(i)).append("\n"); 
     } 
     myAddress.setText(strReturnedAddress.toString()); 
     } 
     else{ 
     myAddress.setText("No Address returned!"); 
     } 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     myAddress.setText("Canont get Address!"); 
    } 

Répondre

1

C'est parce qu'il est indéfini: http://developer.android.com/reference/android/location/Geocoder.html vous montre les 2 constructeurs. L'un prend un Contexte, l'autre prend un Contexte et un Locale, mais vous le créez dans la classe MyLocationListener. Essayez d'utiliser ceci:

Geocoder geocoder = new Geocoder(<ACTIVITY CLASS NAME>.this, Locale.ENGLISH); 

à la place. Pour des raisons de performances, vous pouvez créer une instance unique du Geocoder et dans le constructeur de la classe MyLocationListener, plutôt que d'en créer une chaque fois que vous obtenez une mise à jour d'emplacement.

+0

Je suis encore un peu confus, qu'est-ce que serait dans mon cas spécifique? – 63alfred

+0

Oui ça a bien marché. Maintenant, je regarde comment lire un fichier délimité par des virgules dans android. D'abord je dois savoir où le localiser afin que l'application puisse le lire. Je pourrais simplement transférer les données dans le fichier délimité par des virgules à une série de tableaux dans le fichier sting ou java, mais il doit y avoir un moyen de simplement mettre le fichier délimité par des virgules et de le lire. De plus, le fichier délimité par des virgules a comme 3000 entrées, pas beaucoup de bits car c'est du texte mais beaucoup de frappe. – 63alfred

Questions connexes