Dans ma mise en page forte> forte>, j'ai une vue que je voudrais accéder à Comment pourrais-je le faire? P>
normalement, Mais puisque ma vue est définie dans la mise en page de l'activité, je ne peux pas faire cela. P>
pourrais-je utiliser Infater Code> Pour gonfler la mise en page du fragment et appelez
FINTVIEBYID code>. p>
getactivity (). FOISVIEWBYID code>? strong> p>
3 Réponses :
Faites ceci:
((YourActivityName)getActivity()).viewName
Ce n'est pas une bonne pratique. Vous ne devriez pas faire ça. L'activité doit gérer sa vue sur elle-même et vous pouvez déclencher cette fonction de la poignée à l'aide d'une interface. Vérifiez cela. P>
https://developer.android.com/training/basics/fragments/communication p>
Dans la mise en page de mon activité, j'ai une vue qui
je voudrais fort> accès à partir de son fragment attaché. P> Non, vous ne voulez pas. P>
Comment pourrais-je le faire? P> blockquote>
getactivity (). FOISTVIEDBYID (R.ID.BLAH) CODE>, mais vous ne devriez pas. P>
Mais puisque ma vue est définie dans la mise en page de l'activité, je ne peux pas faire cela. P> blockQuote>
Techniquement, vous pouvez, vous ne devriez tout simplement pas. P>
Puis-je utiliser la getactivité (). FOISVIEWBYID? P> blockQuote>
Oui, mais vous ne devriez pas. P> <<
Quant à la bonne réponse, c'est pourquoi ils ont créé
Android Architecture Composants: ViewModel / LiveData Code> - Pour que vous ne seriez pas tenté d'accéder directement à des points de vue. Vous pouvez modifier les données / l'état partagé via ViewModel au même endroit et, grâce à Livetaa, tous les observateurs seraient mis à jour avec celui-ci. P>
Par conséquent, vous n'avez jamais besoin de toucher des vues directement, il vous suffit de mettre à jour les données. < / p>
xxx pré> et p>
xxx pré> et p>
xxx pré> de cette façon: < / p>
Vous n'avez pas besoin de gâcher avec des interfaces comme si cela dirait dans Le "Guide de communication Fragment" officiel P> LI>
Vous n'avez pas besoin de toucher directement des vues, il suffit de toucher des données p> li>
vous continuez avec Les meilleures pratiques introduites En 2017 (voir aussi Cette vidéo et Cette vidéo de Google I / O 2017) P> LI> ul>
Vous pouvez également trouver cette technique dans les guides officiels
ici strong> . P> blockQuote>
Je pense que c'est une mauvaise décision d'architecture. Vous pouvez mettre en œuvre les actions nécessaires avec cette vision directement dans Activité, implémenter la nouvelle interface, puis appeler
((((nouvelinterface) getactivité ()). Callmethod () code> ou exclude cette logique du fragment.