将lambda函数从java类传递到kotlin类会导致错误

将lambda函数从java类传递到kotlin类会导致错误,java,android,kotlin,lambda,Java,Android,Kotlin,Lambda,我的科特林班级: class InstallationReceiver(activity : RootActivity, url : String, progressCallback : ((percentage : Int) -> Unit)?, callback : ((isUpdated : Boolean) -> Unit)?, packageName: String){ //my code } 我将lambda fun从java类传递给这个类,如下所示: new

我的科特林班级:

class InstallationReceiver(activity : RootActivity, url : String, progressCallback : 
((percentage : Int) -> Unit)?,  callback : ((isUpdated : Boolean) -> Unit)?, packageName: 
String){

//my code

}
我将lambda fun从java类传递给这个类,如下所示:

new InstallationReceiver(getActivity(), apkUrl, integer -> **{ 
String text = "Installing app"+integer;
textView.setText(text);
}**,true,null);
为什么这个lambda函数需要一个单位返回类型?。我甚至试着返回Unit.INSTANCE
但什么都帮不了我。它仍然显示错误。

那些星号是什么?
我尝试了这个最简单的例子,效果很好:

科特林

class InstallationReceiver(
    a: ((percentage: Int) -> Unit)?
) 
爪哇

new InstallationReceiver(percentage -> {
    String text = "Installing app" + percentage;
    return Unit.INSTANCE;
});
此外,您正在传递
true
null
,其中构造函数需要一个lambda(
(isUpdated:Boolean)->单元
)和一个不可为空的
字符串

您可以在传递空字符串的同时进行编译(不应该这样做,因为应用程序在运行时会崩溃),但确实需要传递lambda而不是布尔值。
类似于上面的示例:

isUpdated -> {
    // your code
    return Unit.INSTANCE;
}

那些星号是什么?
我尝试了这个最简单的例子,效果很好:

科特林

class InstallationReceiver(
    a: ((percentage: Int) -> Unit)?
) 
爪哇

new InstallationReceiver(percentage -> {
    String text = "Installing app" + percentage;
    return Unit.INSTANCE;
});
此外,您正在传递
true
null
,其中构造函数需要一个lambda(
(isUpdated:Boolean)->单元
)和一个不可为空的
字符串

您可以在传递空字符串的同时进行编译(不应该这样做,因为应用程序在运行时会崩溃),但确实需要传递lambda而不是布尔值。
类似于上面的示例:

isUpdated -> {
    // your code
    return Unit.INSTANCE;
}

主要是因为
((百分比:Int)->单位)
意味着传递一个
整数
,然后返回一个
单位
的数据。是的,我算出来了。问题是在另一个lambda函数中,而我认为它在第一个函数中。顺便说一句谢谢。主要是因为
((百分比:Int)->单位)?
意味着传递一个
整数
并返回一个
单位
的数据。是的,我算出来了。问题是在另一个lambda函数中,而我认为它在第一个函数中。顺便说一句,谢谢。我把这些星号放在我认为错误所在的代码中。谢谢你的帮助,我使用了返回语句Unit.INSTANCE,现在它工作正常。我把这些星号放在我认为错误所在的代码中。谢谢你的帮助,我使用了返回语句Unit.INSTANCE,现在它工作正常。