我正在尝试开发一个Android应用程序,其中图像可以每3秒一个一个地隐藏。我厌倦了使用以下代码。
final ImageView[] i = new ImageView[6];
public int l=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cs_game_two);
i[0] = (ImageView) findViewById(R.id.imageView2);
i[1] = (ImageView) findViewById(R.id.imageView3);
i[2] = (ImageView) findViewById(R.id.imageView4);
i[3] = (ImageView) findViewById(R.id.imageView5);
i[4] = (ImageView) findViewById(R.id.imageView6);
i[5] = (ImageView) findViewById(R.id.imageView7);
image_set();
}
public void image_set()
{
for( l=0; l<6; l++){
i[l].postDelayed(new Runnable() {
public void run() {
i[l].setVisibility(View.INVISIBLE);
}
}, 3000);
}
}
在此即时获取ArrayIndexOutOfBoundsException
错误。当我将循环条件更改为l<5
时,只有i [5]图像将被设置为不可见。我似乎无法理解如何解决此问题请帮助
答案 0 :(得分:1)
您需要创建一个实现Runnable的类,并将ImageView作为构造函数参数传递。目前价值可能会发生变化,实际上可能会发生混乱。
示例:
private class MyRun implements Runnable {
private ImageView iv;
public MyRun(ImageView v){
iv = v;
}
@Override
public void run() {
iv.setVisibility(View.INVISIBLE);
}
}