实际类型别名“ApplicationContext”没有相应的预期声明

Anh*_*vit 5 android kotlin kotlin-multiplatform kotlin-multiplatform-mobile

我在尝试为 kotlin 多平台自定义上下文时遇到了这个问题

Actual typealias 'ApplicationContext' has no corresponding expected declaration
The following declaration is incompatible because modality is different:
    public final expect class ApplicationContext
Run Code Online (Sandbox Code Playgroud)

android主程序

import android.app.Application

actual typealias ApplicationContext = Application
Run Code Online (Sandbox Code Playgroud)

共同主

expect class ApplicationContext
Run Code Online (Sandbox Code Playgroud)

ios主程序

import platform.UIKit.UIView

actual typealias ApplicationContext = UIView
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Jab*_*iyo 11

expect结构应该与您要输入别名的类相匹配。

Android的context类是一个abstract

public abstract class Context {}
Run Code Online (Sandbox Code Playgroud)

所以模态错误就来自那里。

您还需要该类expectabstract修复该特定错误

expect abstract class ApplicationContext
Run Code Online (Sandbox Code Playgroud)

制作它abstract会破坏模式,因为UIView它不是abstract。因此,您想要做的事情不可能以简单的方式实现。

您需要为您想要实现的目标考虑不同的策略。

  • @Anhdevit 在最后一条评论之上,上下文与 UI 非常相关。您应该致力于使用 Kotlin Multiplatform 来实现跨所有平台的通用业务逻辑。 (2认同)