Question

Dans une classe d’utilitaires Android, je souhaite obtenir une valeur de préférence système dans une classe, mais je n’ai pas le contexte ici, car la classe qui l’appelle n’a pas non plus le contexte. J'ai constaté que pour les ressources, on peut utiliser la fonction statique Resources.getSystem () . Existe-t-il un moyen similaire d’obtenir les préférences système sans contexte?

Ma classe n'est ni une activité ni un service. C'est une classe utilitaire. Pourrait donner plus d’informations si nécessaire.

Était-ce utile?

La solution

Vous devez lui envoyer un contexte - n'essayez pas de fuir vos responsabilités. :) Votre classe d'utilitaires doit être appelée par une activité ou un service à un certain niveau et vous devrez transmettre ce contexte tout au long de la ligne, à chaque appel de méthode. Je sais que c'est agaçant, j'ai dû faire la même chose moi-même. Considérez-le comme une incitation à garder votre code simple et à exiger le moins possible d’appels de méthode pour obtenir quelque chose d’accompli.

Autres conseils

J'utilise le hack suivant: http://www.hasemanonmobile.com/2009/10/05/quick-and-very-dirty-android-development-trick/

En gros, vous dissimulez un pointeur de contexte en tant que variable statique dans votre activité. Je ne recommanderais ce hack que si vous êtes sur un délai serré.

De plus, si vous écrivez une classe d'utilitaires, vous devriez probablement exiger (comme de nombreux utilitaires Android) que l'application appelante vous fournisse un contexte dans le cadre de votre constructeur.

Vous pouvez créer un contexte:

Context myContext = createPackageContext("com.example", 0);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top