2015-03-06 1 views
0
for (String s : chunks) {                      
    String possibleSquare = "s" + s.substring(2, 4);               
    int id = boardContext.getResources().getIdentifier(possibleSquare, "id", boardContext.getPackageName()); 
    ImageView backgroundImg = (ImageView) findViewById(id);             
    backgroundImg.setBackgroundColor(Color.rgb(255, 255, 255));            

}    

Le code correspondant est indiqué ci-dessus. C'est à partir d'une méthode dans une classe 'Pawn' qui est appelée par le code dans une autre classe 'Chessboard'. Maintenant, findViewById est souligné et AndroidStudio me dit qu'il ne peut pas résoudre la méthode findViewById. Je suppose que c'est parce que le code ne sait pas où chercher la vue, mais je ne suis pas sûr comment indiquer qu'il devrait chercher dans mon fichier 'Board.XML'.Problème d'appel findViewById

+0

est-Pawn un fragment? Ce n'est définitivement pas une activité. – rafid059

+0

Est-il nécessaire d'avoir un tas d'images différentes ou pouvez-vous avoir une image et passer des images différentes quand vous en avez besoin? – DevJem

Répondre

0

Vous devez utiliser R.id.YOUR_ID au lieu de simplement l'ID.
Par exemple

ImageView backgroundImg = (ImageView) findViewById(R.id.id);             
+0

J'ai essayé ça. Il renvoie l'erreur 'Impossible de résoudre le symbole' id '' – credo56

+0

L'identifiant de votre imageview est-il "id"? Pouvez-vous ajouter le code XML à votre message? –

+0

Non, j'ai plusieurs images avec l'identifiant "sXX" où chaque X est un chiffre entre 0 et 7. id représente chacune de ces images – credo56

0

Vous appelez probablement findViewById dans un fragment, ou une classe autonome, etc., qui n'ont pas la méthode findViewById. Vous devez donc le transmettre à la classe.

Essayez:

boardContext.findViewBy(R.id.id); 

for (String s : chunks) {                      
    String possibleSquare = "s" + s.substring(2, 4);               
    int id = boardContext.getResources().getIdentifier(possibleSquare, "id",  boardContext.getPackageName()); 
    ImageView backgroundImg = (ImageView) boardContext.findViewById(id);             
    backgroundImg.setBackgroundColor(Color.rgb(255, 255, 255));            

} 
+0

C'est exactement ce que je pensais plus tôt, mais il me donne toujours l'erreur 'Impossible de résoudre la méthode findViewById (int)' – credo56

+0

Hmm pouvez-vous poster ce qui se passe dans le contexte s'il vous plaît? –

+0

case "black_pawn": pawn blackPawn = nouveau pion (v.getContext()); blackPawn.possibleMoves (1, 0); – credo56