androidx.compose.ui.tooling.preview.PreviewActivity 不是活动子类或别名

Spa*_*tta 13 android android-jetpack-compose

我将我的 compose 和 kotlinCompilerExtensionVersion 更新为1.0.0-rc02from beta09,Kotlin version to 1.5.21,Gradle version to 7.1and Gradle plugin version to7.1.0-alpha04

从那时起 - 在尝试运行时MyScreen- 我收到此错误:

androidx.compose.ui.tooling.preview.PreviewActivity 不是活动子类或别名

我无法解决这个问题。我该如何解决?

小智 10

使用 Compose 1.0,Kotlin 1.5.10 和 Android Studio 2020.3.1 在大多数预览中仍然存在相同的问题(有些没有)

在这种情况下,在“编辑配置”中的顶部栏菜单中帮助手动创建新配置,其参数与无效配置中的参数相同并带有警告(“androidx.compose.ui.tooling.PreviewActivity 不是 Activity 子类或别名”)。这种新的手动创建的配置对我有用。


Dav*_*oni 5

我在使用 Bumblebee (AKA, 2021.1.1) Canary 6、7 和 8,使用 compose 版本 1.0.0、1.0.1 和 1.1.0-alpha01 时遇到此错误。我刚刚在 Studio 问题跟踪器上提出了一个错误:

https://issuetracker.google.com/issues/196248459

引用我自己的话:

很明显这是一个“左手不知道右手在做什么”的事情,因为PreviewActivity它不在那个包中,而是androidx.compose.ui.tooling-android.compose.ui.tooling.preview自 compose 1.0.0-beta09以来它一直没有出现。

更新

通过清除所有预览运行配置,我能够使预览再次工作。这是我的步骤:

  1. 单击“运行配置”选择器并选择编辑配置...
  2. 展开Compose Preview分组
  3. 选择所有预览配置(您可以选择第一个并shift-选择最后一个)
  4. 单击-按钮删除所有集合
  5. 点击 Ok
  6. 在文件菜单中运行Invalidate Caches...
  7. 在 AS 重新启动并重新填充缓存后,运行预览。它现在应该可以工作了。

显然,每次我启动预览时,AS 都会在它创建的临时运行配置中缓存“垃圾”。“垃圾”对早期版本的 AS 有效,但破坏了更高版本。清除此缓存让我再次工作。


Seb*_*ger 4

1.0.0我在使用 Compose和 Kotlin 1.5.10(推荐)时遇到了同样的错误。

在此输入图像描述

我通过在我的 gradle 文件中添加以下依赖项来修复这些问题debugImplementation "androidx.compose.ui:ui-tooling:$compose_version"

不要忘记将依赖项的版本设置为当前的 compose 版本。

在此输入图像描述

重建并重新加载预览后,一切对我来说都工作正常。

该示例的预览如下所示:

package com.example.compose.basics.ui

import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.Card
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.shadow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import de.db.dbs.travio.compose.basics.themeing.ComposeBasicsTheme

@Preview
@Composable
fun ScreenContent() {
    ComposeBasicsTheme {
        Card(modifier = Modifier
                .padding(8.dp)
                .shadow(8.dp, RoundedCornerShape(32.dp))
        ) {
            Text(
                    text = "Hello World!",
                    modifier = Modifier.padding(16.dp)
            )
        }
    }
}
Run Code Online (Sandbox Code Playgroud)