将 Java 代码转换为 Kotlin 以实现 OnChangeListener 时遇到问题
Posted
技术标签:
【中文标题】将 Java 代码转换为 Kotlin 以实现 OnChangeListener 时遇到问题【英文标题】:Trouble converting Java code to Kotlin to implement an OnChangeListener 【发布时间】:2019-03-03 14:02:23 【问题描述】:我有这段代码来实现 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
对象为空
你的听众很好。阅读错误信息。
【参考方案1】:
您的 rangebar
为 null,
为避免崩溃,请像这样使用:
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 代码转换为 Kotlin 以实现 OnChangeListener 时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章