Concatenation de caractères

Concatenation de caractères - Java - Programmation

Marsh Posté le 10-10-2015 à 09:22:49    

Bonjour,
 
J'ai encore un autre problème  :pfff:  
 
Dans mon petit jeu, j'ai différents sprites (Imageview), que j'ai appellé : obd1, obd2, obd3, obd4, obd5
pour les faire évoluer à l'écran, j'ai besoin de concatener les "obd" avec une variable i un entier, que je peux faire évoluer dans une boucle for (avec i allant de 1 à 5). Au final j'obtiendrai une image que je déclarerai comme suit :
 
image = (ImageView) findViewById(R.id."obd"+i);
 
dans ce cas, le (R.id."obd"+i) ne fonctionne pas.
 
Comment faire pour mes déclarations ?
 
Merci d'avance pour votre aide
 
 :jap:

Reply

Marsh Posté le 10-10-2015 à 09:22:49   

Reply

Marsh Posté le 10-10-2015 à 23:27:27    

Bonsoir,
 
Pour préciser, voici un bout de code, j'ai le obg qui se met en rouge avec une erreur (Cannot resolve symbol 'obg')
 
    protected void managerOfOeufs(){
         
        ImageView image;
        String obg[]={"obg1","obg2","obg3","obg4","obg5"};
        for ( int i=1;i<=5; i++){
             
            image=(ImageView) findViewById(R.id.obg[i]);
            image.setVisibility(View.VISIBLE);
        }
           
    }
 
Avec mes différents sprites obg1 à 5 qui sont définis comme suit :
obg1 = (ImageView) findViewById(R.id.obg1);
...
Grrr... Ca m'énerve quand ça marche pas.
 
Merci d'avance pour votre aide

Reply

Marsh Posté le 11-10-2015 à 09:37:41    

hypermc a écrit :

Bonsoir,
 
Pour préciser, voici un bout de code, j'ai le obg qui se met en rouge avec une erreur (Cannot resolve symbol 'obg')
 
    protected void managerOfOeufs(){
         
        ImageView image;
        String obg[]={"obg1","obg2","obg3","obg4","obg5"};
        for ( int i=1;i<=5; i++){
             
            image=(ImageView) findViewById(R.id.obg[i]);
            image.setVisibility(View.VISIBLE);
        }
           
    }
 
Avec mes différents sprites obg1 à 5 qui sont définis comme suit :
obg1 = (ImageView) findViewById(R.id.obg1);
...
Grrr... Ca m'énerve quand ça marche pas.
 
Merci d'avance pour votre aide


 
J'ai pas fait beaucoup de programmation Android, mais pourquoi ne pas définir le tableau obg comme un tableau d'ImageView ? et ensuite construire
 

Code :
  1. obg[0] = (ImageView) findViewById(R.id.obg1);
  2. obg[1] = (ImageView) findViewById(R.id.obg2);
  3. ...


 
En Java on ne peut pas (facilement) construire le nom d'une variable au moment de l'exécution. Ou alors il faut passer par l'instropection ("reflection" en anglais) mais ça peut être très casse-gueule pour quelqu'un qui ne maîtrise pas les subtilités du langage et de la JVM.  

Reply

Marsh Posté le 11-10-2015 à 23:38:24    

Bonsoir leonhard,
 
Merci de ta réponse, en effet ça me plait bien, mais comment déclarerai tu ce tableau d'image ?
 
J'ai essayé  
ImageView [] obg = new ImageView[5];
 
Puis les inititialisations comme suit
obg[1] = (ImageView) findViewById(R.id.obg1);
obg[2] = (ImageView) findViewById(R.id.obg2);
etc, jusqu'à 5
 
puis des appels classiques
obg[i].setVisibility(View.VISIBLE);      (avec i déclaré entier)
 
Cela se compile bien, je n'ai pas d'erreur sur le code, mais à l'exécution, j'ai une erreur dès le départ "l'application s'est malheureusement arrêtée"...
 
C'est pas vrai, mais c'est pas vrai...  :(  
 
Merci encore pour ta bonne idée.  :jap:  
 

Reply

Marsh Posté le 12-10-2015 à 06:11:35    

hypermc a écrit :

Bonsoir leonhard,
 
Merci de ta réponse, en effet ça me plait bien, mais comment déclarerai tu ce tableau d'image ?
 
J'ai essayé  
ImageView [] obg = new ImageView[5];
 
Puis les inititialisations comme suit
obg[1] = (ImageView) findViewById(R.id.obg1);
obg[2] = (ImageView) findViewById(R.id.obg2);
etc, jusqu'à 5
 
puis des appels classiques
obg[i].setVisibility(View.VISIBLE);      (avec i déclaré entier)
 
Cela se compile bien, je n'ai pas d'erreur sur le code, mais à l'exécution, j'ai une erreur dès le départ "l'application s'est malheureusement arrêtée"...
 
C'est pas vrai, mais c'est pas vrai...  :(  
 
Merci encore pour ta bonne idée.  :jap:  
 


 
En java les éléments d'un tableau de n éléments sont numérotés de 0 à n-1. Donc si tu déclare un tableau
comme  

Code :
  1. ImageView [] obg = new ImageView[5];


 
tu ne peux pas accéder au 6ème élément (celui avec l'indice 5). Soit tu écris comme dans mon example en commençant à 0, soit tu déclare un tableau de 6 éléments et tu "ignores" le premier, c'est-à-dire l'élément d'indice 0.  
 
 

Reply

Marsh Posté le 12-10-2015 à 22:16:43    

Merci beaucoup Leonhard, ça marche :bounce:  
 
Tu sais quoi ... Faut que je te bise :D *
 
:hello:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed