2017-04-26 1 views
1

Il y a beaucoup de questions sur ce sujet mais aucune dont les réponses ne résolvent mon problème.Pourquoi setVisibility() fonctionne-t-il dans for-statement?

J'ai un tableau de ImageView et, grâce à une déclaration for, je voudrais les obtenir INVISIBLE. Le code est le suivant.

final ImageView[] image = new ImageView[12]; 

image[0] = (ImageView) findViewById(R.id.imageView1); 
image[1] = (ImageView) findViewById(R.id.imageView2); 
image[2] = (ImageView) findViewById(R.id.imageView3); 
image[3] = (ImageView) findViewById(R.id.imageView4); 

for (int p = 0; p < 4; p++) { 
    image[p].setVisibility(View.INVISIBLE); 
} 

Il semble que le problème met p comme argument de image[], je crois que si je mets un nombre au lieu de p cela fonctionne.

+2

'p' est un nombre. – njzk2

+0

Cela devrait compiler. Est-ce un problème d'exécution? Si oui, veuillez ajouter la trace de la pile à la question. Bien que dans ce cas, ce serait probablement une exception 'NullPointerException' causée par un mauvais identifiant donné à' findViewById() '. – Sunshinator

+0

@AhamadAnees Je ne sais pas, si j'écris par exemple 'image [2]' ça marche, et si j'écris 'image [p]' ça ne marche pas – user7867367

Répondre

1

essayer d'utiliser cela, il utilise Varargs

public void hideViews(View... views) 
    { //it will work with parent class but you can change it to ImageView 
     for (View view : views) { 
      view.setVisibility(View.INVISIBLE); 
     } 
    } 

et l'appel:

hideViews(image1,image2,image3,image4); 

bonne chance;

+0

merci, mais ce qui est écrit entre 'View .. . vues'? – user7867367

+0

@ user7867367 son appelé Varargs lire la suite [ici] (https://www.javatpoint.com/varargs), la question si vous l'avez trouvé utile –