web-dev-qa-db-fra.com

Comment accéder au bouton à l'intérieur de la disposition "include"

Voir la doc: http://Android-developers.blogspot.com/2009/02/Android-layout-tricks-2-reusing-layouts.html

J'ai un bouton dans la mise en page incluse, comment puis-je accéder au bouton? Je ne connais pas l'identifiant! Comment définir le OnClickListener ...?

S'il vous plaît aider ...

31
chow

L'identifiant que vous avez avec la balise include est attribué à la vue racine de la présentation incluse ..__ D'abord, obtenez une référence à cette vue à l'aide de findViewByid. Ensuite, vous pouvez appeler findViewById sur cette vue spécifique pour obtenir une référence à une vue à l'intérieur de la présentation. Alors:

View myLayout = findViewById( R.id.cell1 ); // root View id from that link
View myView = myLayout.findViewById( R.id.someinnerview ); // id of a view contained in the included file
70
Jems

Tout ce dont vous avez besoin est l’identifiant de la vue parent:

 enter image description here

Dans cet exemple, la LinearLayout est le parent de la TextView que je veux à partir de la vue incluse.

Je peux maintenant faire ceci:

    View view = findViewById(R.id.include_title_layout);
    TextView titleTV = (TextView) view.findViewById(R.id.newsTitleTextView);
    titleTV.setText("Whatever");
15
ojonugwa ochalifu

La résolution des ID de widgets lorsqu’on inclut plusieurs fois la même présentation XML présente un piège courant. Un article de blog sur http://www.coboltforge.com/2012/05/tech-stuff-layout/ explique précisément ce problème et comment le résoudre!

5
bk138

Vous connaissez l'identifiant de l'include. Vous pouvez obtenir cet élément complet, puis obtenir l'un de ses enfants à partir de là.

2
Nanne

En fait, les balises include incluent tous les éléments de votre mise en page racine. Vous pouvez donc toujours y accéder en utilisant findViewById dans votre activité.

Supposons que vous ayez un alayout.xml dans lequel il y a une disposition include. Maintenant, dans l'une de vos activités A, dans onCreate, vous avez déclaré setContentView(R.layout.alayout). Maintenant, dans votre disposition d'inclusion, vous pouvez avoir un bouton avec l'ID myBtn. Vous pouvez accéder à cela dans onCreate de la même manière que si elle se trouvait dans la présentation principale: findViewById(R.id.myBtn)

0
Munim Dibosh

je pense que votre moyenne est NavigationView. vous pouvez accéder à la disposition intérieure de cette manière:

NavigationView ngv= (NavigationView) findViewById(R.id.navigation_id);
View innerview =  ngv.getHeaderView(0);
TextView user_view= (TextView)innerview.findViewById(R.id.nav_name); //any you need
user_view.setText(user);
0
a.miadian