obtenez de l'objet d'Activité, tandis qu'en Vue de contexte
C'est une suite de ce post:
findViewById dans un sous-classé SurfaceView jeter RuntimeException
D'après Romain Guy de commentaires (ce qui, je vais accepter peu de temps car c'est une solution), j'aimerais obtenir de l'appel de l'Activité à partir de l'intérieur de la Vue, de sorte que je peux l'utiliser pour obtenir un TextView ressource.
Je ne vois pas de méthodes en Vue que le retour de l'Activité. Quelle est la bonne façon de le faire? Ou est-il une meilleure alternative pour travailler avec TextViews à partir d'une autre Vue du contexte.
En gros, je fais appel setContentView(R. layout.xxx) dans onCreate() (comme d'habitude), donc je n'ai pas vraiment un moyen de passer dans les références à d'autres TextViews à moins que j'ai maladroitement de récupérer la Vue après setContentView et puis faire des appels sur elle.
OriginalL'auteur | 2010-10-10
Vous devez vous connecter pour publier un commentaire.
Une Activité est un Contexte, mais il n'ya aucune garantie que le Contexte utilisé par un point de Vue est toujours une Activité. Recueillir les points de vue de onCreate() pour faire de l'installation est parfaitement valide, et à la façon dont les applications Android sont généralement écrites. Vous pourriez faire quelque chose comme ceci par exemple:
La logique ne devrait pas aller dans vos Vues.
Vous ne pouvez pas faire un findViewById() avant d'appeler setContentView().
Tout à fait raison. Quelle bizarre, bizarre, un arrangement, d'identifier un objet, le mettre sur un autre objet, et demander à un autre objet pour une copie de nouveau, et de ne pas autoriser pour les actions subalternes à vue dans les vues. Je crois que ce que je suis face à ici, c'est que l'API Android est fondamentalement différent de tout ce que j'aurais conçu. De toute façon, je vous remercie. Le code fonctionne comme prévu maintenant.
Qu'entendez-vous par "demander d'autres objets pour en obtenir un exemplaire de nouveau"? Vous avez certainement n'avez pas besoin de le faire. Et points de Vue (bien ViewGroups) peut contenir des enfants de Vues, il n'y a pas de problème avec ça. Il se trouve simplement que SurfaceView est pas un ViewGroup.
Les vues peuvent être créés à l'aide des contextes de Service et je suis sûr qu'ils peuvent être créés avec des contextes applicatifs. En outre, si vous utilisez quelque chose comme Place du Mortier, de votre contexte peut être quelque chose de complètement différent (un Contexte qui enveloppe un autre normal Android contexte).
OriginalL'auteur Romain Guy
Si vous connaissez déjà l'Activité de la classe de votre Vue est en, c'est à dire MyActivity, vous pouvez utiliser le membre statique MyActivity.ce à partir de l'intérieur de votre point de Vue et ses auditeurs, comme dans l'exemple suivant:
que j'ai trouvé dans cette Android tutoriel:
http://developer.android.com/guide/topics/ui/dialogs.html
Il a fait des merveilles pour moi.
PJ_Finnegan
OriginalL'auteur PJ_Finnegan