Почему я не могу выполнить ".startAnimation" в цикле "for" для нескольких кнопок?

У меня есть сетка с 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 ответа

Решение

Я сам нашел проблему, одна кнопка была названа неправильно, и поэтому, когда я перебираю вектор, это вызывает исключение нулевого указателя.

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

Работа с кнопками в циклах работает отлично. Спасибо за все.

Я предлагаю вам поставить петлю внутри onStart() Перезвоните. Возможно, ваши кнопки еще не были созданы в тот момент в вашем коде.

Другие вопросы по тегам