为什么我不能在 "for" 循环中为多个按钮执行“.startAnimation”?

Why not I can execute ".startAnimation" in a "for" loop for several buttons?

我有一个包含 12 个按钮的网格,我想为这些按钮制作动画。我把它们放在一个向量中,当我打算执行“.startAnimation”时,我总是遇到 "NullPointer" 异常,我不知道为什么。

我有这个:

final private int tamGrid=12;


private Button[] botones = new Button[tamGrid];


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_juego_grid12);

    loopAnimation=AnimationUtils.loadAnimation(this, R.anim.animacionbotongrid12);

    //Asociamos los elementos de la vista:
    asociateElements();       
}

public void asociateElements(){
    String buttonID;
    int resID;

    for(int i=0; i<tamGrid; i++) {
        buttonID="boton"+Integer.toString(i);
        resID = getResources().getIdentifier(buttonID, "id","butterflydevs.brainstudio");
        buttons[i]=(Button)findViewById(resID);
        buttons[i].startAnimation(loopAnimation);
    }

}

为什么不用这个?错误是

Caused by: java.lang.NullPointerException

在startAnimation这一行。

我注意到当我尝试这个时也会发生这种情况:

botones[0].setOnClickListener(

                new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        //Acciones del botón:
                        botones[0].setBackgroundColor(Color.RED);

                    }
                }
        );

当我在 "botones[n]" 中使用索引时。 也有人遇到过这种情况吗?

我建议您将循环放在 onStart() 回调中。也许您的按钮此时尚未在您的代码中创建。

我自己发现了问题,有一个按钮命名错误,因此在通过vector时,导致空指针异常。

for(int i=0; i<gridSize; i++)
   buttons[i].startAnimation(animation);

for(int i=0; i<gridSize; i++) {
   buttonID="button"+Integer.toString(i);
   resID = getResources().getIdentifier(buttonID, "id","package.name");
   buttons[i]=(Button)findViewById(resID);
}

在循环中使用按钮效果很好。谢谢大家。