12
votes

Obtenir les préférences du système d'Android sans avoir de contexte

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 ressources.getsystem () . Y a-t-il une manière similaire pour obtenir des préférences système sans contexte?

Ma classe n'est pas une activité ni service. C'est une classe d'utilité. Pourrait donner plus d'informations si nécessaire.


1 commentaires

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é?


3 Réponses :


7
votes

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.


3 commentaires

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.



-1
votes

J'utilise le piratage suivant: http://www.hasemanonmobile.com/2009/10/05/Quick-an-Trad-Tront-dirty-android-development-trick/

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.

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.


1 commentaires

Pense que c'est un lien pourrir là-bas :)



-3
votes

Vous pouvez créer un contexte: xxx


2 commentaires

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 () est une méthode non statique sur Context , vous devez donc avoir un contexte 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.