无法调用findViewById

时间:2015-03-06 02:38:32

标签: java android findviewbyid

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

}              

相关代码如上。它来自类'Pawn'中的一个方法,它被另一个类'Chessboard'中的代码调用。现在,findViewById带下划线,AndroidStudio告诉我它'无法解析方法findViewById'。

我认为这是因为代码不知道在哪里搜索View,但我不确定如何表明它应该在我的'Board.XML'文件中搜索。

2 个答案:

答案 0 :(得分:0)

您需要使用R.id.YOUR_ID而不仅仅是ID 例如

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

答案 1 :(得分:0)

您可能在片段或独立类等中调用findViewById,它们没有findViewById方法。所以你需要将它传递给班级。

尝试:

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

}