【问题标题】:Multiple views sharing same OnClickListener -- listen one at a time?多个视图共享同一个 OnClickListener —— 一次听一个?
【发布时间】:2014-07-24 18:17:39
【问题描述】:

我正在开发一款记忆游戏。

用户可以按下 9x9 板上的任何一个图块。

但是,我想限制用户一次只能按一个。

我尝试使用 TableLayout 进行研究,设置 beforeAscendants=true,并尝试管理用户点击的位置,但事实证明这很乏味,并且保存所有这些坐标似乎效率低下,不可能存在更简单的解决方案。

现在,我在每个图块上调用 .setOnClickListener 并将它们设置为相同的 onClickListener,但是没有办法限制一次可以按下多少个图块。我已经尝试过 A)在匿名 onClickListener 代码中的代码周围设置一个 synchronized() 部分,B)如果一个图块已经在 onClickListener 代码中但它被简单地忽略了,则将布尔值设置为 true 并且 C)撞到我的头上墙,没有帮助

谢谢!

【问题讨论】:

  • 选项 B 应该非常适合这种类型的东西,所以它必须与您的代码有关。你能告诉我们你尝试了什么吗?此外,根据经验,选项 C 最终会导致住院和/或脑震荡,我可能是错的,但我认为它不会解决您的问题

标签: android onclicklistener


【解决方案1】:

这是我能想到的最直接和最简单的方法。你也应该优化逻辑,这里很长。

onClick(View v) {
    switch (v.getId()) {
        case R.id.tile1:
        // Tile 1 is clicked
        // Disable other tiles (try setClickable(false))
            break;
        ...
        default:
            break;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-01
    • 1970-01-01
    相关资源
    最近更新 更多