在循环中使用 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 表中设置颜色