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));            

}    

Соответствующий код указан выше. Это из метода в классе «Пешка», который вызывается кодом в другом классе «Шахматная доска». Теперь findViewById подчеркивается, и AndroidStudio сообщает мне, что он не может разрешить метод findViewById.Неисправность вызова findViewById

Я полагаю, что это связано с тем, что код не знает, где искать представление, но я не уверен, как указать, что он должен искать в моем файле «Board.XML».

+0

Является ли закладывать фрагмент? Это определенно не активность. – rafid059

+0

Нужно ли иметь кучу разных изображений или вы можете иметь одно изображение и передавать в него разные фотографии, когда вам это нужно? – DevJem

ответ

0

Вам нужно использовать только R.ID.YOUR_ID, а не только идентификатор.
Например

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

Я пробовал это. Он возвращает ошибку «Не удается решить символ« id »' – credo56

+0

Является ли идентификатор вашего изображения« id »? Можете ли вы добавить XML в свой пост? –

+0

Нет, у меня есть несколько изображений с идентификатором «sXX», где каждый X представляет собой цифру от 0 до 7. id представляет собой каждый из этих изображений. – credo56

0

Вы, вероятно, вызывая findViewById в фрагменте, или самостоятельный класс и т.д., которые не имеют метод findViewById. Поэтому вам нужно передать его классу.

Try:

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

Это именно то, о чем я думал раньше, но он по-прежнему дает мне ошибку «Не могу решить метод findViewById (int)» – credo56

+0

Хм, можете ли вы опубликовать то, что проходит в контексте, пожалуйста? –

+0

case "black_pawn": pawn blackPawn = новая пешка (v.getContext()); blackPawn.possibleMoves (1, 0); – credo56