Aller au contenu

Utiliser les ressources dans un Content Provider


Recommended Posts

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

Lien vers le commentaire
Partager sur d’autres sites

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é par Nivek
Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...