Почему я не могу выполнить ".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()
Перезвоните. Возможно, ваши кнопки еще не были созданы в тот момент в вашем коде.