代码之家  ›  专栏  ›  技术社区  ›  Glenncito

无法将Java代码转换为Kotlin以实现OnChangeListener

  •  1
  • Glenncito  · 技术社区  · 6 年前

    我有这个代码来实现一个 范围栏库

    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)“”在空对象引用上

    我做错什么了?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Jeel Vankhede    6 年前

    你的 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" 
    }