Android冬季鸟类计数应用增量重置问题修复求助
修复鸟类喂食器计数App增量重置问题
你的问题核心是成员变量没有从Intent传递的现有值初始化:你定义的totalcount、count等变量始终从0开始,但界面上显示的是Intent传过来的现有值,点击增量时实际是在0的基础上累加,所以会出现“现有值4,点击两次增量得到6需要点6次”的情况——前4次是从0追到4,后2次才是加到6。
具体修复步骤:
- 同步成员变量与界面初始值
在onCreate方法中,把Intent传递的字符串计数值转换成Int,赋值给对应的成员变量,替换原来只更新UI的代码:
// 替换原来的UI赋值代码,改为同步数据源和UI val bird = intent.getStringExtra(AppConstants.BIRD_NAME) activityUpdateBirdBinding!!.tvBird.setText(bird) // 处理totalcount val totalcountStr = intent.getStringExtra(BIRD_TOTALCOUNT) totalcount = totalcountStr?.toIntOrNull() ?: 0 // 空值则默认0 activityUpdateBirdBinding!!.etTotalcount.setText(totalcount.toString()) // 处理count val cntStr = intent.getStringExtra(BIRD_COUNT) count = cntStr?.toIntOrNull() ?: 0 activityUpdateBirdBinding!!.countText.setText(count.toString()) // 处理femalecount val femalecntStr = intent.getStringExtra(BIRD_FEMALECOUNT) femalecount = femalecntStr?.toIntOrNull() ?: 0 activityUpdateBirdBinding!!.femalecountText.setText(femalecount.toString()) // 处理malecount val malecntStr = intent.getStringExtra(BIRD_MALECOUNT) malecount = malecntStr?.toIntOrNull() ?: 0 activityUpdateBirdBinding!!.malecountText.setText(malecount.toString())
注意:原来的代码里用val totalcount = ...定义了局部变量,会覆盖成员变量,所以要改用不同的变量名(比如totalcountStr),确保赋值给成员变量。
- 修复点击方法名大小写不匹配
你的XML里点击事件写的是count_onClickdecrement,但代码里的方法名是count_onClickDecrement(最后一个D大写),这会导致减量按钮点击无效,需要统一两者的名称:
- 要么把代码里的方法名改成
count_onClickdecrement(全小写结尾) - 要么把XML里的
android:onClick="count_onClickdecrement"改成android:onClick="count_onClickDecrement"
同理,female和male的减量方法也存在同样的大小写问题,一并修正。
修复原理
成员变量是你计数操作的数据源,必须和界面显示的初始值保持一致。之前只更新了TextView显示,但数据源还是0,所以增量操作实际是在0的基础上累加,导致和预期不符。同步数据源后,增量/减量就会基于现有计数值正确计算。
内容的提问来源于stack exchange,提问作者littleoldlady
相关产品推荐
相关产品推荐

