如何检测按钮点击监听器是否触发及CountDown场景下TextView点击状态判断
实现方案
你可以通过新增2个全局状态标记 + 监听倒计时结束回调的方式实现需求,具体逻辑如下:
- 首先在Activity类中声明2个全局变量,分别存储当前展示的随机数、用户是否点击过TextView的状态标记:
// 存储当前TextView展示的随机数 private int currentRandomNum; // 标记用户是否点击过当前轮次的TextView private boolean isTvClicked = false;
- 在你原有
CountDown倒计时的启动逻辑中,每次生成新的随机数前,先将isTvClicked重置为false,避免上一轮的点击状态干扰当前轮次的判断,示例代码参考:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView textView = findViewById(R.id.your_tv_id); // 给TextView设置点击监听 textView.setOnClickListener(v -> { // 标记已点击 isTvClicked = true; // 这里写你校验随机数的逻辑 if (currentRandomNum == 你要校验的目标值) { // 校验通过的逻辑 } else { // 校验不通过的逻辑 } }); // 你的原有倒计时逻辑 new CountDownTimer(10000, 1000) { @Override public void onTick(long millisUntilFinished) { // 每次生成新随机数前重置点击状态 isTvClicked = false; currentRandomNum = new Random().nextInt(100); // 你的原有随机数生成逻辑 textView.setText(String.valueOf(currentRandomNum)); } @Override public void onFinish() { // 倒计时结束判断是否未点击 if (!isTvClicked) { // 这里写用户未点击时要执行的操作 } } }.start(); }
- 额外注意:如果你的随机数是倒计时结束才生成,只需要在生成随机数的位置前重置
isTvClicked即可,不需要在onTick里重复重置。
内容的提问来源于stack exchange,提问作者ayman omara
相关产品推荐
相关产品推荐

