[英]Passing lambda function from java class to kotlin class gives me error
我的科特林課:
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 返回類型?。 我什至嘗試返回 Unit.INSTANCE 但沒有任何幫助。 它仍然顯示錯誤。
那些星號是什么?
我試過這個最小的例子,它的工作原理:
科特林
class InstallationReceiver(
a: ((percentage: Int) -> Unit)?
)
爪哇
new InstallationReceiver(percentage -> {
String text = "Installing app" + percentage;
return Unit.INSTANCE;
});
此外,您正在傳遞true
和null
,其中構造函數需要一個 lambda ( (isUpdated : Boolean) -> Unit
)和一個不可為空的String
。
您可以在傳遞空字符串的同時進行編譯(您不應該這樣做,因為應用程序會在運行時崩潰),但可以肯定的是,您需要傳遞 lambda 而不是布爾值。
類似於上面的例子:
isUpdated -> {
// your code
return Unit.INSTANCE;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.