Je viens de commencer à apprendre des fragments et j'ai une activité qui compte 1000 lignes de code que j'ai converties en fragment. P>
Je me demande s'il y a un moyen facile de permettre à mon fragment d'écouter des boutons qui résident dans le XML de son activité parent. J'ai essayé de simplement ajouter un auditeur régulier dans le fragment 'CODE> ONCREAVEVIEW CODE> avec l'ID des boutons, mais il est (attendu) me donnant une exception de pointeur Null. P>
Je connais le OnseearchClickListener CODE> Méthode de le faire, mais cela prendrait probablement beaucoup de nombreuses heures de refactorisation manuelle pour atteindre ce dont j'ai besoin (du moins de ce que je peux dire à propos de son utilisation, je «D Soyez heureux de me tromper), alors je me demandais si quelqu'un connaît une autre méthode pour que cela soit fait de manière non répétitive. P>
4 Réponses :
Vous pouvez essayer d'obtenir une référence de la vue d'activité de cette façon: puis ajouter l'écoute: p>
C'est la bonne réponse à ma question, bien que j'ai appris sur d'autres formes de communication d'activité-fragment (interfaces) des autres réponses (merci à tous).
Comment atteindre cela sur Xamarin?
Définir une interface appelée comme Vous pouvez voir cette exemple pour voir comment implémenter une interface. P> cliclisteneronactivity code> contient une méthode nommée
onclickinactivité (vue v) code> et mettre en œuvre cela en fragment. Lorsque vous cliquez sur le bouton de l'activité, appelez cette méthode de l'interface. P>
Malgré la réponse d'Emre Akturk n'est pas fausse, mais ce n'est pas la meilleure pratique, vous pouvez donc joindre votre fragment code> à une autre activité
code> et après cela, que
Activité code> peut ne pas avoir ce
Voir code>. Ainsi, le meilleur moyen utilise une interface
code>. Créez votre fragment
code> implémente votre interface souhaitée puis dans
onclicklistener code> de votre bouton
code>, appelez l'interface de ce
fragment code>. p>
en fragment fait comme ça ..
public class Myfragment extends Activity implements MyFragment.Callback{ public void onButtonClicked(View btn) { // The radiobutton in MyFragment has been clicked myButton.setEnabled(true); // or something like this. } }
Implémenter une interface pour la communication entre activité et fragments. Reportez-vous: SimpleDeveloper.com/...
Vous pouvez y parvenir en utilisant une interface. Faites de votre fragment Implémentez l'interface et remplacez la méthode d'interface pour effectuer la fonction souhaitée.