将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,现在它工作正常。