Et quel est le meilleur moyen? Faites-moi savoir si la question a besoin d'éclaircissement.Quelqu'un peut-il expliquer la différence entre passer le contexte de l'activité à une classe interne et simplement le référencer avec MyActivity.this?
Répondre
j'ai choisi de répondre à ma propre question, non pas parce que des réponses sont mauvais, mais parce que pendant qu'ils sont aussi bons, aucun fournissent une solution complète répondre.
Il semble que l'un des principaux facteurs à prendre en considération est réutilisabilité:
En utilisant MyActivity.this de se référer au contexte signifie que vous devrez modifier votre code si jamais vous décidez d'utiliser la classe un autre projet/classe/contexte. Passer le contexte dans le constructeur et le référencer comme une variable privée, vous permet de réutiliser la classe où vous voulez sans modifications.
Un autre facteur qui influencera votre choix est de savoir si votre classe interne est publique ou privée. Cela n'a pas de sens de rendre une classe interne publique, puis de référencer le contexte avec MyActivity.this. L'application forcerait à fermer le moment où vous utilisez la classe d'une autre activité. Je dirais cependant qu'une classe publique appartient à son propre fichier, mais cela dépend du développeur individuel. Finalement, il y a la question de la simplicité, car il est plus simple d'écrire MyActivity.this que d'implémenter un constructeur etc. Cette simplicité apparente peut revenir et vous mordre, comme vous pouvez le voir ci-dessus, si vous décidez que vous devez Utilisez la classe ailleurs.
Je vais continuer à utiliser MyActivity.this par simplicité pour tous les gestionnaires d'événements en ligne, mais pour toute autre situation, il semble que le passage du contexte au constructeur est la meilleure pratique.
Il s'agit plus d'un problème de conception car avoir une référence dans les deux sens aura le même résultat. Tenez compte de la complexité, du niveau d'accès et d'autres éléments de conception liés à la classe interne.
Merci. Si le résultat est le même, y a-t-il une raison de passer le contexte en tant que paramètre à une classe interne? et ici je fais référence à la complexité qu'elle ajoute, si peu que ce soit. – Marmoy
Si c'est une classe interne statique, définitivement. C'est vraiment une question de design et de modèle d'objet car la référence est équivalente. –
Désolé, mais vos réponses sont plutôt vagues. Exactement comment cela affecte-t-il les choses si la classe est statique? – Marmoy
Pour réutiliser le passage, le contexte est plus facile car vous pouvez simplement le copier dans un autre projet. Sinon, vous devez changer tous MyActivity.this à OtherProjectActivity.this.
Mais surtout, il n'a pas d'importance ce que vous utilisez
Un autre très bon point. – Marmoy
- 1. Différence entre myactivity.this, myactivity.class, this
- 2. différence entre le contexte
- 3. différence entre lxml et html5lib dans le contexte de beautifulsoup
- 4. Différence entre self.var et simplement var
- 5. passer le contexte à une autre méthode
- 6. Différence pratique entre le type et la classe à Scala
- 7. Passer le contexte entre templatetags, django
- 8. Différence entre superclasse et supertype et différence entre la sous-classe et le sous-type
- 9. Différence entre la course et le remplissage?
- 10. Quelle est la différence entre référencer un objet en spécifiant une classe exacte et System.Object?
- 11. Différence entre le type d'objet et le type de référence
- 12. Différence entre le débogage et la publication
- 13. Différence entre la classe Java et le fichier jar
- 14. Différence entre le fichier, la classe et l'activité dans Android
- 15. différence entre le vecteur de vecteurs et de classe personnalisée
- 16. Pouvez-vous expliquer la différence entre AIDL et Service?
- 17. Django: Comment passer le contexte?
- 18. NTFS et FAT: la différence en interne
- 19. Différence entre == et le cas?
- 20. Référencer classe interne dans MVC Voir
- 21. quelle est la différence entre une classe et une bibliothèque?
- 22. Différence entre SPFile et la classe PublishingPage
- 23. Hérite d'une classe de modèle avec une classe interne et accès à la classe interne dans la classe héritée
- 24. Différence entre ~ lp() ou simplement ~ dans la locitation de R
- 25. Différence entre classe et package
- 26. différence entre le drain et la libération
- 27. quelle est la différence entre interne et privé
- 28. Différence portée de la fonction et le contexte
- 29. passer le nom de classe via le contexte et l'utiliser pour stocker la valeur statique dans la classe
- 30. Différence entre classe et classe <?>
C'est principalement une préférence personnelle. – Wroclai
@Pompe de velo - La principale différence n'est-elle pas que MyActivity.this est beaucoup plus simple? – Marmoy
Dépend de la situation réelle. Si votre classe interne est privée, c'est plus simple, mais qu'en est-il si vous le rendez public et que vous en créez une instance dans une autre classe? Si private = utilise MyActivity.this, sinon passez un 'Context' à la classe interne. C'est comme ça que je le fais. – Wroclai