Android按钮点击执行两种操作并循环切换,第三次点击无响应问题求助
解决Android按钮交替点击无响应的问题
嘿,我来帮你搞定这个按钮交替点击的问题~
问题原因分析
你当前的代码里,clickcount每次点击都会持续递增:
- 第1次点击:
clickcount=1,执行黑色背景+白色文字 - 第2次点击:
clickcount=2,执行白色背景+黑色文字 - 第3次点击:
clickcount=3,依然进入else分支,重复第2次的操作,自然达不到你想要的“回到第一次效果”的预期。
两种可行的解决方案
方案1:重置计数变量
当计数到2时,把clickcount重置为0,这样下次点击就会回到clickcount=1的分支:
@Override public void onClick(View v) { clickcount = clickcount + 1; // 把重复的代码提取到分支外,减少冗余 Random random = new Random(); int randomNum = random.nextInt(6) + 1; // 等价于你原来的nextInt(7-1)+1 TextView textresult = (TextView) findViewById(R.id.textView); if(clickcount == 1) { bck.setBackgroundColor(Color.BLACK); textresult.setTextColor(Color.WHITE); } else { bck.setBackgroundColor(Color.WHITE); textresult.setTextColor(Color.BLACK); clickcount = 0; // 重置计数,为下一次交替做准备 } }
方案2:用奇偶判断(更简洁)
直接通过取余运算判断点击次数是奇数还是偶数,不用手动重置计数,代码更简洁:
@Override public void onClick(View v) { clickcount++; Random random = new Random(); int randomNum = random.nextInt(6) + 1; TextView textresult = (TextView) findViewById(R.id.textView); if(clickcount % 2 == 1) { // 奇数次点击,执行第一个操作 bck.setBackgroundColor(Color.BLACK); textresult.setTextColor(Color.WHITE); } else { // 偶数次点击,执行第二个操作 bck.setBackgroundColor(Color.WHITE); textresult.setTextColor(Color.BLACK); } }
额外小优化
注意到你两次分支里都重复了初始化Random和获取TextView的代码,把它们提到分支外面可以让代码更整洁,也避免了重复创建对象的开销~
内容的提问来源于stack exchange,提问作者Chand Ninder
相关产品推荐
相关产品推荐

