2010-12-08 4 views
0

Mon activité principale est AddressFinder, ici je commence une AddressController:géocodage Contexte dans la sous

AddressController ac = new AddressController(); 

Le AddressController devrait mettre à jour dans certains cas:

import android.content.Context; 
.... 
private void updateAddresses() throws IOException { 
    Geocoder geocoder = new Geocoder(context); 
for (Address a: address) { 
List<Address> addressIn = geocoder.getFromLocation(a.getLatitude(), 
                 a.getLongitude(), 1); 
} 
} 

Maintenant, je ne sais pas quel contexte je utiliser. Je ne comprends pas comment l'utiliser. J'ai essayé this, context, getBaseContext(), getApplicationContext() mais rien n'a fonctionné. En outre, j'ai essayé de donner un argument à l'Adresscontroller avec le context (getApplicationContext) de l'activité principale.

Répondre

0

Dans votre classe Activity Créer une variable:

Context con = this; 
... 
Geocoder geocoder = new Geocoder(con); 

Peut-être utiliser un autre constructeur ?:

public Geocoder (Context context, Locale locale) 
+0

le géocodeur est dans le contrôleur, ou l'avez-vous également déplacé? J'ai essayé votre suggestion et changé le constructeur que je peux utiliser le 'con' dans le contrôleur:' new AddressController (con) '- ne fonctionne pas, mais thx pour la réponse. – foobartux

+0

dans Anroid.developers dire contexte dans le constructeur isthe Contexte de l'activité d'appel –

+0

vous êtes sûr que votre application plante sur ce constructeur? –

1

Je pense que je suis une solution. Dans l'activité principale i l'utilisation suivante:

ac.updateAddr(getApplicationContext()); 

Dans le AddressController j'ai changé:

public void updateAddr(Context c) throws IOException { 
    updateAddresses(c); 
} 

Cest la façon dont je donne le contexte de la Geocoder dans le AddressController. Fonctionne bien.

Questions connexes