gpt4 book ai didi

android - 从所有按钮中删除点击监听器?

转载 作者:行者123 更新时间:2023-11-29 15:30:36 25 4
gpt4 key购买 nike

我正在制作一个简单的“井字游戏”,所以我有 9 个按钮。这9个按钮具有相同的我在布局“点击”属性中设置的点击监听器,这样我就不必在代码中创建 9 个按钮来设置监听器。

我的问题是我必须删除所有的监听器当比赛获胜或平局时从按钮。

有没有一种方法可以遍历所有按钮,而无需实际创建 9 个按钮变量并将每个监听器设置为 null?

我的代码:

public void onClick(View v) {
Button b = (Button) v;
Integer tag = Integer.parseInt((String) b.getTag());
values[tag] = turnToPlay;
b.setText(turnToPlay);
b.setOnClickListener(null);
playerTurn.setText("Player " + turnToPlay + " turn");

if(isBoardFull()) {
playerWon.setText("Tie Game!!");
removeAllListeners()
}

if(turnToPlay.equalsIgnoreCase("X")) {
turnToPlay = "O";
}

else {
turnToPlay = "X";
}
}

最佳答案

您可以使用此函数遍历 View 树并移除所有监听器:

public void removeListeners() {
View topView = getWindow().getDecorView();
traverseTree(topView);
}

private void traverseTree(View view) {

if(view instanceof ViewGroup) {
ViewGroup group = (ViewGroup)view;
for(int index = 0; index < group.
getChildCount(); index++) {
traverseTree(group.getChildAt(index));
}
}

else if (view instanceof Button) {
Button button = (Button)view;
button.setOnClickListener(null);
}
}

关于android - 从所有按钮中删除点击监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7277905/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com