为什么我不能在 "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);
}
在循环中使用按钮效果很好。谢谢大家。
我有一个包含 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);
}
在循环中使用按钮效果很好。谢谢大家。