这是抛出一个空指针异常。我甚至在调用循环之前声明了9-10个按钮来填充Button数组。
public void initiateNumberButtons()
{
for(int x = 0; x < numberButtonArray.length - 1; x++)
{
numberButtonArray[x] = (Button) findViewById(getResources().getIdentifier(idArray[x].toString(), "id", getPackageName()));
numberButtonArray[x].setOnClickListener( new OnClickListener() {
@Override
public void onClick(View v) {
enableButtons();
//numberPressed = numberPressed + numberButtonArray[x].getText().toString();
Button b = (Button)v;
numberPressed = numberPressed + b.getText().toString();
runningTotal.setText(numberPressed);
}
});
}
}
这一行特别指出:idArray中填充了合法的按钮ID。
numberButtonArray[x] = (Button) findViewById(getResources().getIdentifier(idArray[x].toString(), "id", getPackageName()));
如果idArray中填充了正则id,也就是说填充了生成的R类中的整数(例如R.id.my_button1),那么您应该只使用findViewById()方法,而不使用getIdentifier(…)。
findViewById(idArray[x])
getIdentifier()方法要求第一个参数是所需资源的String名称,该名称已在XML布局资源文件中声明。例如"my_button1"。请注意,不鼓励使用此方法,因为直接通过标识符检索资源比通过名称检索资源快得多。