在 Kotlin Mutliplatform 项目的 Actual / Expect 类 中传递 Android / iOS 特定参数
Passing Android / iOS specific arguments in Actual / Expect classes in Kotlin Mutliplatform project
所以我正在尝试将 KMM 模块集成到现有的 android 应用程序中。我将公共 KMM 模块中的 class 公开到 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 进行进一步处理(如过滤、提取数据和更新数据库),但我无法图如何将它传递给通用 KMM 模块。我是最近开始使用 KMM 的 Web 开发人员,所以我的知识非常有限。请帮忙,提前致谢!
您可以为此类型创建一个通用包装器。
常用代码:
expect class CustomDataType
Android代码:
actual typealias CustomDataType = android.package.name.CustomDataType
有时因为API不同而无法使用typealias
,这时你可以将其存储在属性:
actual class CustomDataType(val native: android.package.name.CustomDataType)
所以我正在尝试将 KMM 模块集成到现有的 android 应用程序中。我将公共 KMM 模块中的 class 公开到 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 进行进一步处理(如过滤、提取数据和更新数据库),但我无法图如何将它传递给通用 KMM 模块。我是最近开始使用 KMM 的 Web 开发人员,所以我的知识非常有限。请帮忙,提前致谢!
您可以为此类型创建一个通用包装器。
常用代码:
expect class CustomDataType
Android代码:
actual typealias CustomDataType = android.package.name.CustomDataType
有时因为API不同而无法使用typealias
,这时你可以将其存储在属性:
actual class CustomDataType(val native: android.package.name.CustomDataType)