2
votes

Définition manuelle du contexte sous Android

Je suis nouveau dans le développement Android et j'ai fait une recherche sur le contexte. Je comprends ce que c'est et pourquoi est utile. Mais je vois qu'android gère le contexte pour moi dans les activités par exemple, je dois étendre une classe qui hérite du contexte et c'est tout. Cependant, dans certaines situations, je dois ajouter manuellement du contexte à une chose. Par exemple, lors de la création d'une nouvelle instance d'une vue depuis kotlin. Je dois passer un contexte au constructeur de vue, par exemple: Button (this)

Pourquoi dois-je indiquer explicitement à une instance de vue qu'elle fait partie d'une activité?

Après tout, je le définis dans l'activité.

Je comprends que le contexte est comme un pont entre mon application et les ressources externes et les outils système, mais le configurer manuellement me déroute parfois.


1 commentaires

nous devons ajouter le contexte en tant que paramètre car nous ne pouvons pas générer de vue pour les classes qui n'ont pas de contexte, c'est donc comme une vérification ...


3 Réponses :


1
votes

C'est parce qu'il existe de nombreux autres paramètres pour cela.

Nous définissons le contexte car nous laissons la classe de base Button (ou toute autre que vous utilisez) que la variable déclarée est une instance de Button mais pas les autres classes disponible partout!


0 commentaires

1
votes

J'ai trouvé cet article: https://www.101apps.co.za/index.php/articles/all-about-using-android-s-context-class.html

Je pense que cela explique très bien pourquoi nous devons passer le contexte manuellement pour afficher les instances.

"Passer le contexte à la vue lors de sa construction, donne vous avez la possibilité d'utiliser un contexte différent pour construire la vue, comme celui utilisé par l'activité, par exemple. Cela donne la vue accès à des ressources autres que celles utilisées par l'activité. "

Android peut définir le contexte automatiquement, mais il vous donne la liberté d'en choisir un autre. Cela pourrait être utile.


0 commentaires

2
votes

C'est vrai, en théorie, cela n'aurait pu être fait que lors de l'attachement de la vue à un parent, puis si le parent est attaché à la racine de l'activité, il a un contexte, sinon - lors de l'attachement d'une vue, Android aurait pu descendants et définissez leur contexte.

Cependant:

  1. Il n'est pas pratique à mettre en œuvre. Il est facile d'avoir des vues autonomes, chacune étant déjà définie dans son contexte.
  2. Certaines choses sont dans le contexte et sont nécessaires pour manipuler la vue. Par exemple. système de contraintes, métriques ... de nombreux bits et boulons. Les vues écoutent également les événements et peuvent fournir certains services qui nécessitent un contexte avant d'être attachés à une autre vue.
  3. Et si vous avez plusieurs contextes. Vous voulez pouvoir choisir le contexte auquel faire référence. Disons que vous disposez d'un bouton flottant toujours allumé, géré par certains services et de vues gérées par l'activité.

Il est fortement recommandé de consulter les sources Android. Vous trouverez des faits intéressants à l'intérieur, et c'est un excellent moyen d'apprendre.


0 commentaires