在循环中使用 setBackgroundColor 和 setImageDrawable 时 Android 强制关闭 [关闭]

Posted

技术标签:

【中文标题】在循环中使用 setBackgroundColor 和 setImageDrawable 时 Android 强制关闭 [关闭]【英文标题】:Android force close when using setBackgroundColor and setImageDrawable in loop [closed] 【发布时间】:2012-10-17 11:35:19 【问题描述】:

我想设置动态创建的视图的背景颜色,但我在以下位置强制关闭:

item1.setBackgroundColor(android.R.color.black);

在下面的代码中:

    for (int i = 0; i < numberOfRows; i++) 
        View shelfRow;
        shelfRow.setBackgroundResource(R.drawable.shelf_row2);
        ImageView item1 = (ImageView) findViewById(R.id.row_item1);
        item1.setBackgroundColor(android.R.color.black);
        parentPanel.addView(shelfRow);
    

并且还使用 setImageDrawable 设置可绘制对象得到了相同的结果。

【问题讨论】:

如果不是这种情况,请发布堆栈跟踪,但我很确定您的问题是该项目为空。 不能为 ImageView 应用 TextColor,但可以为该 ImageView 设置背景图像 ADR 您可以为 ImageView Backgrund 或 SRC 设置颜色。我们需要堆栈跟踪来回答这个问题。 99% item1 为空,因为 findViewById 返回空。是 listView 还是类似的东西? 只是为了知识。从资源中获取颜色需要使用Resource.getColor函数,不能使用ID作为颜色。 【参考方案1】:

您需要动态创建图像视图。

ImageView images[];
     View shelfRow[] =new View[numberOfRows];
    for (int i = 0; i < numberOfRows; i++) 
        images = new ImageView[numberOfRows];

        shelfRow[i].setBackgroundResource(R.drawable.shelf_row2);
        images[i].setBackgroundColor(android.R.color.black);
        parentPanel.addView(shelfRow[i]);
    

或者创建 10 个图像视图并为其赋予 id 之类的......

int[] buttonIDs = new int[] R.id.button1ID, R.id.button2ID, R.id.button3ID, ... ;
              View shelfRow[] =new View[numberOfRows];
    ImageView[] forAdapter = new ImageView[numberOfRows];
    for (int i = 0; i < numberOfRows; i++) 
        forAdapter[i] = (ImageView) findViewById(buttonIDs[i]);

        shelfRow[i].setBackgroundResource(R.drawable.shelf_row2);
        forAdapter[i].setBackgroundColor(android.R.color.black);
        parentPanel.addView(shelfRow[i]);
    

【讨论】:

【参考方案2】:
View shelfRow;
shelfRow.setBackgroundResource(R.drawable.shelf_row2);

请注意,ViewshelfRow 还没有被初始化,所以它的值为 null。 你在一个空对象上调用 setBackgroundResource() 方法,首先用一些值初始化shelfRow,然后在对象上调用一个方法。

【讨论】:

以上是关于在循环中使用 setBackgroundColor 和 setImageDrawable 时 Android 强制关闭 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

SetBackGroundColor 在 CardView 中不起作用

uitableview setbackgroundcolor 未在 UITableViewStyleGrouped 表中设置颜色

按钮 setBackgroundColor 无高亮效果

setBackGroundColor 重置视图的形状

如何将“#ffff”字符串颜色作为参数提供给 setBackgroundColor()? [复制]

UIButton 外观 setBackgroundColor 更新后现在影响导航栏