簡體   English   中英

將 lambda 函數從 java 類傳遞到 kotlin 類給了我錯誤

[英]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;
});

此外,您正在傳遞truenull ,其中構造函數需要一個 lambda ( (isUpdated : Boolean) -> Unit )和一個不可為空的String
您可以在傳遞空字符串的同時進行編譯(您不應該這樣做,因為應用程序會在運行時崩潰),但可以肯定的是,您需要傳遞 lambda 而不是布爾值。
類似於上面的例子:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM