我在循环中创建了一个按钮数组。它似乎工作,但如果我添加OnClickListener
到每个按钮,我得到一个NullPointerException
。我该如何解决这个问题?
这是我的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
fieldModel=new Field();
buttons=new Button[10][10];
for(int i=0; i<10; i++) {
for (int j = 0; j < 10; j++) {
String buttonID = "button" + i + j;
int resID = getResources().getIdentifier(buttonID, "id", getPackageName());
buttons[i][j] = ((Button) findViewById(resID));
buttons[i][j].setOnClickListener(new View.OnClickListener() { // <-- I get the exception here...
@Override
public void onClick(View v) {
"some action"
}
});
Main_layout,有100个按钮命名为'button00'到'button99'?如果缺少任何一个,它将导致在您所标记的行上出现空指针。
如果它适合你的应用程序,也值得考虑使用GridView,或者使用GridLayoutManager的RecyclerView,而不是手动添加按钮。
你得到异常,因为id不包含在活动布局。如果你想通过findViewById匹配Button对象,你必须首先在布局文件中添加它们,或者,如果你已经有了它们,确保你在findViewById (resId)中使用的Id是正确的。