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

时间:2015-05-30 15:57:01

标签: android coding-efficiency

我有一个带有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]”中使用索引时。 这也发生在任何人身上?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我自己发现了问题,一个按钮被命名为错误,因此当我通过向量时,这会导致空指针异常。

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);
}

使用循环中的按钮可以很好地工作。谢谢大家。