java - 将 Java 代码转换为 Kotlin 以实现 OnChangeListener 时遇到问题
问题描述
我有这段代码来实现Range Bar 库的侦听器:
rangebar.setOnRangeBarChangeListener(new RangeBar.OnRangeBarChangeListener() {
@Override
public void onRangeChangeListener(RangeBar rangeBar, int leftPinIndex,
int rightPinIndex, String leftPinValue, String rightPinValue) {
}
});
现在我尝试通过以下方式将其导入并更改为 kotlin:
rangebar.setOnRangeBarChangeListener(object: RangeBar.OnRangeBarChangeListener {
override fun onRangeChangeListener(rangeBar:RangeBar, leftPinIndex:Int,
rightPinIndex:Int, leftPinValue:String, rightPinValue:String) {
textView.text = "$leftPinIndex"
}
})
或者
rangebar.setOnRangeBarChangeListener { rangeBar, leftPinIndex,
rightPinIndex, leftPinValue, rightPinValue ->
textView.text = "$leftPinIndex" }
在这两种情况下,应用程序都会崩溃并出现以下错误:
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void com.appyvet.materialrangebar.RangeBar.setOnRangeBarChangeListener> (com.appyvet.materialrangebar.RangeBar$OnRangeBarChangeListener)”
我究竟做错了什么?
解决方案
你rangebar
是空的,
为避免崩溃,请像这样使用:
rangebar?.setOnRangeBarChangeListener(object: RangeBar.OnRangeBarChangeListener {
override fun onRangeChangeListener(rangeBar:RangeBar, leftPinIndex:Int, rightPinIndex:Int, leftPinValue:String, rightPinValue:String) {
textView.text = "$leftPinIndex"
}
})
或者
rangebar?.setOnRangeBarChangeListener { rangeBar, leftPinIndex, rightPinIndex, leftPinValue, rightPinValue ->
textView.text = "$leftPinIndex"
}
推荐阅读
- excel - VBA for Excel:使用唯一标识符将一行的值复制到另一行
- django - 静态文件 - Django Azure
- visual-studio-code - @import Sass partials 时 VSCode 未连接到 WSL20.02
- sql - 使用递归的数字集中的 SQL 最大连续值
- c# - 无法从 DLL 返回 Binance Spot 账户余额
- windows - 使用 powershell 添加本地组用户策略
- python - Pyspark:根据条件对窗口求和
- shell - 批处理等效于命令输出的 shell
- swift - algolia 过滤器在控制台中有效,但在实际搜索结果中无效
- javascript - 函数 .prev() 和 .closest() 没有按预期工作