所以我正在嘗試將 KMM 模塊集成到一個已經存在的 android 應用程式中。我將公共 KMM 模塊中的一個類公開到 Android 專案中,它看起來像這樣(請忽略語法,它只是為了參考我正在做的事情而撰寫的) -
// Common KMM Module
import CustomDataType // THIS DOES NOT WORK COS IT"S AN ANDROID MODULE AND NOT MULTIPLATFORM
object CommonHandler {
fun init(args: CustomDataType) { // ??? How can I receive custome Data type here ?????
println("test init of Mission Handler")
AndroidModule.init(args); // How can I pass into the android KMM module
}
}
expect object AndroidModule {
fun init(args: CustomDataType)
}
// ANDROID KMM Module
import CustomDataType; // I can import the data type here though
actual object AndroidModule {
actual fun init(args: CustomDataType)
}
// MAIN ANDROID APP
import CommonHandler;
fun someAndroidMethod(){
CommonHandler.init(CustomDataType)
}
android 方法會通過應用程式頻繁呼叫,其想法是將此事件傳遞給 KMM 以進行進一步處理(如過濾、提取資料和更新 DB),但我無法弄清楚如何將其傳遞給常見的 KMM 模塊. 我是最近開始 KMM 的 Web 開發人員,所以我的知識非常有限。請幫助,提前謝謝!
uj5u.com熱心網友回復:
您可以為此型別創建一個通用包裝器。
常用代碼:
expect class CustomDataType
安卓代碼:
actual typealias CustomDataType = android.package.name.CustomDataType
typealias有時因為 API 不同而無法使用,在這種情況下,您可以將其存盤在屬性中:
actual class CustomDataType(val native: android.package.name.CustomDataType)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/481598.html
標籤:爪哇 安卓 科特林 kotlin-多平台 公里
