Android:如何检查随机数组中的按钮是否正确按下

Android:如何检查随机数组中的按钮是否正确按下,android,button,random,Android,Button,Random,我需要在android上设计一个有6个按钮的活动,除了一个按钮外,所有按钮都以相同的图标开始。一个没有的是随机选择的,经过一定时间后,奇数的一个被掩盖起来,看起来和其他的一样。然后,用户必须识别出奇数,如果他们是正确的,它将重放该活动。如果他们错了,那么它需要结束 我已成功创建活动,以便它执行上述所有操作,同时识别是否选择了错误的按钮,如果选择了,则完成活动。据我所知,问题在于更改的按钮是随机选择的,因此在程序运行之前,我无法判断哪些按钮是错误的。以下是我目前掌握的代码: ImageButton

我需要在android上设计一个有6个按钮的活动,除了一个按钮外,所有按钮都以相同的图标开始。一个没有的是随机选择的,经过一定时间后,奇数的一个被掩盖起来,看起来和其他的一样。然后,用户必须识别出奇数,如果他们是正确的,它将重放该活动。如果他们错了,那么它需要结束

我已成功创建活动,以便它执行上述所有操作,同时识别是否选择了错误的按钮,如果选择了,则完成活动。据我所知,问题在于更改的按钮是随机选择的,因此在程序运行之前,我无法判断哪些按钮是错误的。以下是我目前掌握的代码:

ImageButton changedButton;
Random random = new Random();

int changedButtonNo;
int buttonSelect;

int usual = R.drawable.abc_ic_cab_done_holo_light;
int changed = R.drawable.abc_ic_cab_done_holo_dark;

int[] buttons = { R.id.imageButton1, R.id.imageButton2, R.id.imageButton3,    R.id.imageButton4, R.id.imageButton5, R.id.imageButton6 };

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.inspection_task_menu);

    buttonSelect = random.nextInt(6);
    changedButtonNo = buttons[buttonSelect];
    changedButton = (ImageButton)findViewById(changedButtonNo);
    changedButton.setImageResource(changed);

    //Decrease amount of time the stimuli is displayed over attempts
    CountDown(60);

    changedButton.setOnTouchListener(new OnTouchListener() 
    {
        public boolean onTouch(View v, MotionEvent event) 
        {
            if (event.getAction() == MotionEvent.ACTION_UP) 
            {
                final Toast toast = Toast.makeText(getBaseContext(), "Correct", Toast.LENGTH_SHORT);
                toast.show();
                recreate();
            }
            return true;
        }
    });
    //If any other button from the list is pressed, exit activity
}

public void CountDown(int milliseconds)
{
    new CountDownTimer(milliseconds, 1000)
    {
        @Override public void onTick(long toFinish)
        {
        }

        @Override public void onFinish()
        {
            changedButton.setImageResource(usual);
        }
    }.start();
}

@Override
public void recreate()
{
    Intent intent = getIntent();
    overridePendingTransition(0, 0);
    intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
    finish();
    overridePendingTransition(0, 0);
    startActivity(intent);
}
View.OnTouchListener getOnTouch(ImageButton button) 
{
    return new View.OnTouchListener() 
    {
        @Override
        public boolean onTouch(View v, MotionEvent event) 
        {
            if (v.getId() == changedButtonNo)
            {
                if (event.getAction() == MotionEvent.ACTION_UP) 
                {
                    final Toast toast = Toast.makeText(getBaseContext(), "Correct", Toast.LENGTH_SHORT);
                    toast.show();
                    recreate();
                }
            }
            else
            {
                final Toast toast = Toast.makeText(getBaseContext(), "Wrong", Toast.LENGTH_SHORT);
                toast.show();
                finish();
            }
            return true;
        }
    };
}

任何帮助都将不胜感激。

在onTouch(View v,MotionEvent事件)中,您有View.id,它将告诉您按下了哪个按钮。是的,但它在onTouchListener中,只有在按下changedButton而没有其他按钮时才会触发。所以,在onTouch中检查是不相关的。现在你有了它。。。您必须为所有按钮设置onTouch/ClickListener…否则您希望如何获得触控?然后在onTouch/中单击。。。如果(v==changedButton)。。。否则…为什么要为此开始新的活动?你不能再开始随机按钮吗?我试过了。我做了以下工作: