The better solution would be to render your graphics onClick event. When you press a button, you check if the answer was right, then you render the graphics.
using while loop like you do it now is wrong, since your graphics will be rendered all the time (whether button is pressed or not)
Basically (this is not a solution, rather a guideline based on your code):
public void initialize(){
yellowBar.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
if(colorNumber == 0){
points ++;
score.setText(String.valueOf(points));
updateColors();
}
}
});
greenBar.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
if(colorNumber == 1){
points ++;
score.setText(String.valueOf(points));
updateColors();
}
}
});
redBar.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
if(colorNumber == 2){
points++;
score.setText(String.valueOf(points));
updateColors();
}
}
});
}
}
public void updateColors(){
colorNum = new Random();
colorNumber = colorNum.nextInt(2);
switch (colorNumber){
case 0: colors.setDisplayedChild(0);
break;
case 1: colors.setDisplayedChild(1);
break;
case 2: colors.setDisplayedChild(2);
break;
}
colors.setVisibility(View.VISIBLE);
}