Jump to content
Sign in to follow this  
zefyre

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

Share this post


Link to post
Share on other 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().

Edited by Nivek

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  





×
×
  • Create New...