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