Comment puis-je appeler getContentResolver dans android?
Je suis en train d'écrire une bibliothèque de classe pour encapsuler des ma logique dans ma première application Android. L'une des fonctions que je veux à encapsuler est une fonction qui interroge le carnet d'adresses. En tant que tel, il a besoin d'un ContentResolver
. Je suis à essayer de comprendre comment garder les fonctions de la bibliothèque noire-boîte... c'est pour éviter d'avoir chaque Activity
passer dans son contexte propre à obtenir un ContentResolver
.
Problème est que je ne peux pas pour la vie de me comprendre comment obtenir un ContentResolver
de l'intérieur de ma fonction de bibliothèque. Je ne peux pas trouver une importation qui contient getContentResolver
. Googler dit d'utiliser getContext
pour obtenir un Context
sur laquelle appeler getContentResolver
, mais je ne peux pas trouver une importation contenant getContext
. À côté des poteaux, a déclaré à l'utilisation getSystemService
pour obtenir un objet de l'appel getContext
. MAIS je ne peux pas trouver l'importation contenant getSystemService
!!!!
Donc je suis coincé en se demandant, comment puis-je obtenir un ContentResolver dans un encapsulé fonction de la bibliothèque, ou je suis un peu coincé avoir à tous les appelant Activity
passer une référence à son propre contexte?
Mon code est quelque chose de fondamentalement comme ceci:
public final class MyLibrary {
private MyLibrary() { }
//take MyGroupItem as a class representing a projection
//containing information from the address book groups
public static ArrayList<MyGroupItem> getGroups() {
//do work here that would access the contacts
//thus requiring the ContentResolver
}
}
getGroups est la méthode où je cherchais à éviter d'avoir à passer une Context
ou ContentResolver
si je pouvais, comme je l'espérais avoir proprement tests en boîte noire.
OriginalL'auteur eidylon | 2011-02-04
Vous devez vous connecter pour publier un commentaire.
Ont chaque bibliothèque de l'appel de fonction passage dans un
ContentResolver
... Ou de prolongerApplication
à garder un contexte et d'y accéder de manière statique.Application
? Y aurait-il quelque chose dont j'aurais besoin pour nettoyer dans un destructeur de méthode ou de quoi que ce soit, ou ?Ok, donc je vais essayer d'aller dans cette voie. J'ai une classe qui
extends Application
et j'ai ajouté le nom de classe entièrement qualifié commeandroid:name
dans le fichier manifeste de l'application. Alors maintenant, dans ma bibliothèque de classe, je suis en train d'appelgetApplication()
, mais il ne la trouve pas comme une méthode, et me donne pas de refactoring conseils d'un nécessaire à l'importation pour ajouter. Comment puis-je appelergetApplication()
pour obtenir l'application de la poignée?Tant pis, j'y ai pensé. Merci pour l'aide! Cheers!
OriginalL'auteur techiServices
Vous pouvez l'utiliser comme ceci:
OriginalL'auteur codercat
Ici est de savoir comment je me suis retrouvé à faire cela, pour toute personne peut trouver ce fil dans l'avenir:
J'ai utilisé sugarynugs de la méthode de création d'une classe qui
extends Application
, et ensuite ajouté l'enregistrement dans le fichier de manifeste d'application. Le code de mon application de classe est alors:Alors, pour obtenir un ContentResolver dans ma bibliothèque de classe, mon code de la fonction est telle:
OriginalL'auteur eidylon
Un peu dur sans voir plus de la façon dont vous êtes le codage de votre bibliothèque, mais je ne vois pas une autre option pour utiliser le contexte, et donc que lors de l'appel de la classe.
Un "random" de la classe ne dispose pas de l'environnement pour obtenir un contentresolver: vous avez besoin d'un contexte.
Maintenant, il n'est pas trop étrange de passer votre (activité) le contexte de votre classe. De http://android-developers.blogspot.com/2009/01/avoiding-memory-leaks.html
(l'emphase est mienne)
Je pense qu'en passant le contexte, de sorte que vous pouvez l'utiliser pour obtenir le contentresolver est votre solution 🙂
pas si il a besoin seulement de la contentresolver...
OriginalL'auteur Nanne