使用OnClickListeners在数组中启动按钮

时间:2014-09-28 07:23:03

标签: java android

这会引发空指针异常。在调用循环之前,我甚至已经声明了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()));

1 个答案:

答案 0 :(得分:0)

如果idArray填充了常规id - 这意味着使用生成的R类的整数(例如R.id.my_button1),那么你应该使用findViewById()方法而不使用getIdentifier(...)。

findViewById(idArray[x])

getIdentifier()方法要求第一个参数是您在XML布局资源文件中声明的所需资源的String名称。例如“my_button1”。请注意,不建议使用此方法,因为通过标识符直接检索资源比使用名称更快地检索资源。