findViewById的问题,解释性地解释

时间:2015-03-07 03:10:27

标签: java android

enter image description here

大家好。

我上面发布了我的Android项目的基本图表。这真是令人伤心,但那是5分钟的油漆让你。

无论如何,我会引导你完成它。我有一系列的imageViews的xml,我的board.Java类中有onClickListeners。如果单击其中一个imageView,则实例化pawn.java的实例,我将上下文传递给实例化的pawn对象,然后调用其possibleMoves()方法。

在这个方法结束时,我生成了一个int列表,它恰好是imageViews的id。 possibleMoves()的最后一部分如下:

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

}                                                                                                               
return list;

我遇到的问题是AndroidStudio说我的findViewById(id)无法解析。我已经尝试将上下文boardContext(我传递给我实例化的pawn对象的上下文)放在findViewById前面,我尝试使用findViewById(R.id.id)。

建议?

1 个答案:

答案 0 :(得分:2)

findViewById(int id)View个对象的函数 - here ..因此您无法在任何内容或任何对象上调用它。当您引用Activity并致电findViewById(int id)时,它会提取活动的contentView并在其上调用..

所以你的解决方案,给包含你的ImageView的视图充气或者引用你的活动,或者如果你传递的上下文是一个活动作为上下文,那么你可以将你的活动投射到上下文并调用你喜欢的方法