【发布时间】:2018-12-21 09:33:25
【问题描述】:
我创建了几个按钮,当用户点击第一个按钮时,第一个按钮的边框变为red,然后只有用户可以点击第二个按钮。
该程序可以记录用户按下的第二个按钮并显示 到控制台。
稍后,我想将第一个按钮的背景更改为第二个按钮的背景。
box = new ResizeButton[]{
(ResizeButton) findViewById(R.id.kotak1),
(ResizeButton) findViewById(R.id.kotak2),
(ResizeButton) findViewById(R.id.kotak3),
(ResizeButton) findViewById(R.id.kotak4),
(ResizeButton) findViewById(R.id.kotak5),
(ResizeButton) findViewById(R.id.kotak6),
(ResizeButton) findViewById(R.id.kotak7),
(ResizeButton) findViewById(R.id.kotak8),
(ResizeButton) findViewById(R.id.kotak9)
};
boxPlay = new int[]{0,0,0,0,0,0,0,0,0}; // This is to identify player 1 or player 2 win
box[i].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
box[currentButton].setImageDrawable(getResources().getDrawable(R.drawable.border_red));
int changeWith;
do {
changeWith = selectedButton();
}while (changeWith == -1);
Log.d("TAG", "Change: " + changeWith);
}
private int selectedButton() {
returnCode = -1;
for(int i = 0; i < box.length;i++){
final int selected = i;
box[i].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(boxPlay[selected] == 0)
returnCode = selected;
else
invalidSelect();
}
});
}
return returnCode;
}
}
当我运行此代码时出现错误:
原因:输入调度超时(Waiting because the touched 窗口尚未完成对输入事件的处理 之前交付给它。) 负载:1.68 / 1.09 / 0.72
如何解决这个问题?非常感谢您在此问题上的时间和帮助。
【问题讨论】:
-
可以添加截图吗?无法弄清楚你想说什么
this selected button is turn with border red, then user can select another button.???这根本没有意义。还有,boxPlay[selected] == 0boxPlay 是什么?我的理解是press first button than only second button should be active and you want to long what is the second button -
感谢您的评论先生,请稍等。
-
检查我的问题新问题先生。
-
如果用户想要选择的是已经选择的按钮怎么办?
-
它调用了 invalidSelect 函数。
标签: android button onclicklistener