zefyre Posté(e) 26 janvier 2010 Share Posté(e) 26 janvier 2010 Bonjour à tous, je suis en train de développer une petite appli mais on m'a toujours dit d'éviter de mettre des valeurs en durs dans le code. Donc là je m'attaque au Content Provider et je voudrais utilisé des chaines de caractères que j'ai dans string.xml, tout cela afin de ne pas toucher au code si je souhaite modifier la valeur du CONTEN_URI ou encore la définition de mes tables SQL. Alors en cherchant j'ai compris que les ressources étaient disponibles via -Resources -Activity -Application -Context (sauf erreur) alors la méthode que je voulais appliquer était de lancer l'appli et une fois l'activity démarrée récupérer les ressources et mettre une varaible static, en pensant que le onCreate des Activity était un peu comme le main(). Mais j'ai comme l'impression que le ContentProvider est éxécuté avant l'activity. Un exemple de se que j'aimerai public static final Uri CONTENT_URI = Uri.parse(MainActicity.RESSOURCES.getString(R.string.provider)); Voila merci de votre aide PS : Android SDK 2.0 inside Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Nivek Posté(e) 26 janvier 2010 Share Posté(e) 26 janvier 2010 (modifié) Dans ContentProvider, tu as une méthode getContext() qui te permet de récupérer le contexte d'exécution. Il vaut donc mieux utiliser getContext().getText(R.string.provider) Le passage par ton Activity principale n'est pas envisageable (et pas nécessaire) car il faudrait dans ce cas que les propriétés auxquelles tu accèdes soient statiques, ce qui n'est pas possible pour un Context qui dépend forcément d'une instance... Bref, pas besoin de chercher un truc tordu, le context est accessible depuis le ContentProvider. Tout simplement. :) Edit : tu ne pourras de toutes façons pas placer ce type de "constantes" dans une variable statique puisque pour récupérer leurs valeurs tu as forcément besoin d'un Context qui par définition ne peut pas être static. Crée une variable de classe non statique, et initialise là dans le onCreate(). Modifié 26 janvier 2010 par Nivek Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
zefyre Posté(e) 26 janvier 2010 Auteur Share Posté(e) 26 janvier 2010 Merci de ta réponse mais du coup je ne peux pas déclarer de constantes à partir des ressources. Exemple le CONTENT_URI est une constante (static final Uri ). J'ai bien compris que je peux récupérer un contexte (getContext()) mais j'ai besoin d'une instance de mon ContentProvider. En gros ma question est comment avoir des contantes quand la seule facon d'accéder à mes ressources ce fait part une instance. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Rejoignez la conversation
Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.