Dans une classe d'utilité Android, je souhaite obtenir une valeur de préférence système dans une classe, mais je n'ai pas le contexte là-bas, car la classe qui appelle cela n'a pas non plus le contexte. J'ai constaté que pour les ressources, on peut utiliser la fonction statique Ma classe n'est pas une activité ni service. C'est une classe d'utilité. Pourrait donner plus d'informations si nécessaire. P> ressources.getsystem () code>. Y a-t-il une manière similaire pour obtenir des préférences système sans contexte? P>
3 Réponses :
Vous devez l'envoyer un contexte - N'essayez pas de fuir vos responsabilités. :) Votre classe d'utilité doit être appelée par une activité ou un service à un certain niveau, et vous allez passer à ce contexte tout le long de la ligne, à travers chaque appel de méthode. Je sais que c'est ennuyeux, je devais faire des choses similaires moi-même. Considérez une incitation à garder votre code simple et à exiger que peu d'appels de méthodes sont possibles pour obtenir quelque chose d'accompli. P>
Non, il ne s'agit pas de la paresse. Je personnifie tout le Android et cette classe est appelée par une classe interne Android qui n'a pas de contexte.
Ensuite, les préférences ne sont pas ce que vous voulez utiliser pour stocker les informations. Les préférences sont scopées aux applications / activités. Stockez les informations sur le disque à la place.
Merci. Cela peut aider. Je devrais vérifier.
J'utilise le piratage suivant: Essentiellement, vous conserverez un pointeur de contexte comme une variable statique à l'intérieur de votre activité. Je ne recommanderais que ce piratage laids si vous êtes sur une date limite serrée. p>
En outre, si vous écrivez une classe d'utilité, vous devez probablement avoir besoin (autant d'utilitaires Android requis) que l'application appelante vous fournit un contexte dans le cadre de votre constructeur. P>
Pense que c'est un lien pourrir là-bas :)
Vous pouvez créer un contexte:
S'il vous plaît ajouter des commentaires, lorsque vous avez indiqué cette réponse. Nous pouvons donc apprendre pourquoi ce n'est pas une bonne solution.
CreatePackagecontext () Code> est une méthode non statique sur
Context code>, vous devez donc avoir un contexte
code> déjà pour l'appeler. Son problème est qu'il ne veut pas nécessiter de vous obliger à passer un objet de contexte partout si tout ce que vous voulez faire est d'accéder aux ressources du système.
Hors de curiosité, je suis dans la même situation que toi maintenant. L'esprit fait une petite lumière sur ce que vous avez fini par décidé?