Android开发问题:陷入if语句块逻辑执行困境
问题排查与解决
嘿,我来帮你搞定这个图片切换的问题~
核心问题分析
你代码里的switched变量是方法内部的局部变量,每次调用pictureSwitch方法时,它都会被重新初始化为false。这就导致不管你点击多少次按钮,每次进入方法时switched都是false,永远只会执行else分支,自然没法实现图片切换的效果。另外你原代码的else分支还截断了,缺少更新switched状态的代码,就算变量作用域没问题,状态也不会变化。
修复方案
把switched变量提升为Activity类的成员变量,让它的状态能在多次方法调用之间保存;同时补全else分支里的状态更新代码:
// 将switched声明为类的成员变量,初始值设为false private boolean switched = false; public void pictureSwitch (View view){ ImageView imageView = (ImageView) findViewById(R.id.imgVCat); if (switched){ imageView.setImageResource(R.drawable.catstart); Log.i("Status-Start", "Wert: " + switched); switched = false; } else { imageView.setImageResource(R.drawable.catswitch); Log.i("Status-switched", "Wert: " + switched); // 补上这行,更新状态为true,为下一次切换做准备 switched = true; } }
修复逻辑说明
- 第一次点击按钮时,
switched是初始的false,执行else分支,切换到catswitch图片,同时把switched设为true; - 第二次点击按钮时,
switched已经是true,执行if分支,切换回catstart图片,再把switched设为false; - 后续点击会重复这个循环,完美实现图片切换效果。
内容的提问来源于stack exchange,提问作者Irminar
相关产品推荐
相关产品推荐

