2015-06-07 3 views
0

Я пытаюсь разработать приложение для Android, где изображения могут быть установлены невидимыми один за другим каждые 3 секунды. Я устал делать это, используя следующий код.Android for loop не работает должным образом

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 error.When я измениться условия цикла к l<5 только я [5] изображение будет установлено invisible.I не могу понять, как решить эту проблему, пожалуйста, помогите.

+0

Параметр л значение не содержит значение, которое вы поверить. У вас есть глобальный l. и частный l в функции image_set() – odedsh

ответ

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

} 
+0

Я бы дал каждому Runnable ссылку на «ImageView» и избавился от всех глобальных переменных. – odedsh

+0

Можете ли вы привести пример? – np1234

+0

@ np1234 см. Мой ответ – greywolf82