【发布时间】:2018-02-21 08:56:09
【问题描述】:
在布局代码中,制作了按钮 ID。我需要访问所有按钮并创建一个 ArrayList,在 Java 中通过 findViewById() 加载按钮,将按钮放在 ArrayList 中。
但它显示NullPointerException。
java.lang.RuntimeException:无法启动活动 组件信息{com.bqlab.themelab/com.bqlab.themelab.activity.SelectActivity}: java.lang.NullPointerException:尝试调用虚拟方法 空对象上的“布尔 java.util.ArrayList.add(java.lang.Object)” 参考
原因:java.lang.NullPointerException:尝试调用虚拟 方法 'boolean java.util.ArrayList.add(java.lang.Object)' 在 null 对象引用
使用这个表单的原因是,我需要对每个按钮都使用setOnClickListener。
问题是这段代码,感谢您阅读。
selectTopButtons.add((Button) findViewById(R.id.select_top_btn01));
selectTopButtons.add((Button) findViewById(R.id.select_top_btn02));
selectTopButtons.add((Button) findViewById(R.id.select_top_btn03));
selectTopButtons.add((Button) findViewById(R.id.select_top_btn04));
selectTopButtons.add((Button) findViewById(R.id.select_top_btn05));
selectTopButtons.add((Button) findViewById(R.id.select_top_btn06));
for (int i = 0; i < selectTopButtons.size(); i++) {
final int finalI = i;
selectTopButtons.get(finalI).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
selectTopButtons.get(finalI).setBackground(getResources().getDrawable(R.color.colorYellow));
clickedButton = selectTopButtonNames.get(finalI);
for (int i = 0; i < selectTopButtons.size(); i++) {
if (i == finalI)
break;
else
selectTopButtons.get(finalI).setBackground(getResources().getDrawable(R.color.colorWhite));
}
}
});
}
【问题讨论】:
-
ArrayList 为空...按钮不是问题
-
所以我通过 add 方法添加了按钮。是不是走错路了?
-
不,你没有。
Attempt to invoke ... add() ... on a null reference。由于列表不存在,因此从未添加按钮。
标签: android arraylist nullpointerexception