当我尝试设置我的ImageView对象的大小时,我总是有同样的错误:
尝试写入字段' int android.view.ViewGroup $ LayoutParams.width'在空对象引用上
我的一段代码:
TableLayout tl = (TableLayout)findViewById(R.id.layoutDuNiveau);
for(int j=0;j<hauteurDuNiveau;j++){
TableRow tr = new TableRow(this);
tr.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT, TableLayout.LayoutParams.WRAP_CONTENT));
for(int i=0;i<largeurDuNiveau;i++){
imageViewDuNiveau[i][j] = new ImageView(this);
imageViewDuNiveau[i][j].setImageResource(R.drawable.blanc);
imageViewDuNiveau[i][j].requestLayout();
imageViewDuNiveau[i][j].getLayoutParams().width = 20; // ERROR HERE
imageViewDuNiveau[i][j].getLayoutParams().height = 20; // ERROR HERE
switch(tableauDuNiveau[i][j]){
case '#':
imageViewDuNiveau[i][j].setImageResource(R.drawable.mur);
default:
}
tr.addView(imageViewDuNiveau[i][j]);
}
tl.addView(tr);
}
答案 0 :(得分:4)
如下所示:
如果此View未附加到父级,则此方法可能返回null ViewGroup或setLayoutParams(android.view.ViewGroup.LayoutParams)是 没有成功调用。将视图附加到父级时 ViewGroup,此方法不能返回null
要解决问题调用,请在访问tr
和width
之前将ImageView添加到height
:
tr.addView(imageViewDuNiveau[i][j]);
imageViewDuNiveau[i][j].getLayoutParams().width = 20;
imageViewDuNiveau[i][j].getLayoutParams().height = 20;