Kotlin开发中View布局内amountPicker组件交互异常求助
问题解决方向:
distance.amountPicker.value无法交互的问题 核心问题:控件引用逻辑错误
你的布局里,amountPicker(NumberPicker)和distance(TextView)是同级视图,都直接嵌套在LinearLayout下,并非父子关系。所以distance.amountPicker这种写法完全错误,导致无法正确定位到NumberPicker控件。
具体解决步骤
修正控件引用方式
通过import kotlinx.android.synthetic.main.activity_hike.*已经可以直接访问布局中所有顶级控件,把代码里错误的distance.amountPicker.value替换为直接引用amountPicker.value即可。修改后的
btnAdd点击事件代码:btnAdd.setOnClickListener{ presenter.doAddOrSave( hikeName.text.toString(), description.text.toString(), if(difficultyLevel.checkedRadioButtonId == R.id.Intermediate) "Intermediate" else "Hard", amountPicker.value // 此处修正为直接引用控件 ) }清理冗余导入语句
import kotlinx.android.synthetic.main.activity_hike.view.*是用于通过View对象访问控件的场景(比如自定义View或LayoutInflater加载的布局),而你的Activity是直接通过setContentView(R.layout.activity_hike)加载布局,import kotlinx.android.synthetic.main.activity_hike.*已经足够,直接删除这个冗余导入即可。修复其他潜在代码问题
btnDelete被重复设置了两次点击事件,第二次会覆盖第一次,保留需要的逻辑即可:// 删除重复的点击事件设置 // btnDelete.setOnClickListener { presenter.doAddOrSave(...) } btnDelete.setOnClickListener { presenter.doDelete() }onOptionsItemSelected中的when语法错误,修正为正确分支结构:override fun onOptionsItemSelected(item: MenuItem): Boolean { return when (item.itemId) { R.id.item_cancel -> { presenter.doCancel() true } else -> super.onOptionsItemSelected(item) } }
验证修改效果
完成以上调整后重新运行应用,amountPicker.value应该能正常获取数值,与布局交互恢复正常。
内容的提问来源于stack exchange,提问作者cduff
相关产品推荐
相关产品推荐

