【发布时间】:2014-01-03 14:50:01
【问题描述】:
我的意思不是每个按钮都可以完成每个单独的工作。我的意思是有很多按钮。然后从一堆按钮中按顺序随机选择4个按钮。然后用户必须以相同的顺序单击选择的 4 个按钮,然后会发生一些事情。这是我做的代码。
OnClickListener click2 = new OnClickListener() {
@Override
public void onClick(View v) {
if (v==ans1)
{
if (v==ans2)
{
if (v==ans3)
{
if (v==ans4)
{
tv1.setText("You Win");
}
}
}
}
}
};
我的代码根本不起作用,只有当所有 4 个按钮都是同一个按钮时才会起作用。有什么方法可以通过对所有 4 个按钮使用相同的 OnClickListener 来解决这个问题。还是有其他方法可以在 1 个OnClickListener 上获得多个View?
这是完整的代码
public class MemoryActivity extends Activity {
ImageButton btn1, btn2, btn3, btn4, btn5;
ImageButton ans1, ans2, ans3, ans4, ans5;
TextView tv1, tv2, tv3, tv4;
Button start;
Random random = new Random();
Handler handler1 = new Handler();
private List<Integer> mClickedButtonIds = new ArrayList<Integer>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_memory);
tv1 = (TextView)findViewById(R.id.textView1);
tv2 = (TextView)findViewById(R.id.textView2);
tv3 = (TextView)findViewById(R.id.textView3);
start = (Button)findViewById(R.id.button1);
start.setOnClickListener(click1);
btn1 = (ImageButton)findViewById(R.id.imageButton1);
btn1.setOnClickListener(click2);
btn2 = (ImageButton)findViewById(R.id.imageButton2);
btn2.setOnClickListener(click2);
btn3 = (ImageButton)findViewById(R.id.imageButton3);
btn3.setOnClickListener(click2);
btn4 = (ImageButton)findViewById(R.id.imageButton4);
btn4.setOnClickListener(click2);
}
private OnClickListener click1 = new OnClickListener() {
@Override
public void onClick(View v) {
final ImageButton[] all= {btn1, btn2, btn3, btn4};
for (int a=0; a<4; a++) {
final int b = a;
handler1.postDelayed(new Runnable() { //start delay a
@Override
public void run() { // actions start
btn5 = all[random.nextInt(all.length)];
if (b==0) {ans1 = btn5;}
else if (b==1) {ans2 = btn5;}
else if (b==2) {ans3 = btn5;}
else if (b==3) {ans4 = btn5;}
btn5.setBackgroundColor(Color.RED);
handler1.postDelayed(new Runnable() { //start delay b
@Override
public void run() {
btn5.setBackgroundResource(R.drawable.btn_default_holo_dark);
}
}, 500); //end delay b
//action end
}}, 1000*a ); //end delay a
}
}
};
OnClickListene click2 = new OnClickListener() {
@Override
public void onClick(View v) {
int[] mDesiredOrder = new int[] { ans1,ans2,ans3,ans4 }; //error here
mClickedButtonIds.add(v.getId());
if (mClickedButtonIds.size() > 4)
{
mClickedButtonIds.remove(0);
if (mClickedButtonIds.get(0) == mDesiredOrder[0]
&& mClickedButtonIds.get(1) == mDesiredOrder[1]
&& mClickedButtonIds.get(2) == mDesiredOrder[2]
&& mClickedButtonIds.get(3) == mDesiredOrder[3]
)
{
tv1.setText("You Win");
}
}
}
};
【问题讨论】:
-
您是否希望用户按您期望的顺序按下按钮。像;首先是 btn1,然后是 btn3、btn4 和 btn2?喜欢组合游戏?
-
是的,我希望它井井有条
标签: android button view onclick onclicklistener