class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Row() {
donut(_size = 100.dp, _padding = 10.dp)
}
}
}
@Preview
@Composable
fun donut(_size: Dp = 120.dp, _padding: Dp = 5.dp) {
Box(modifier = Modifier
.size(_size)
.clip(CircleShape)
.background(Color.Green)
.padding(_padding)
.clip(CircleShape)
.background(Color.Red))
}
}
无法找到@Preview "com.pelicancolder.chapter1_03.MainActivity.donut"预览将在重建项目后显示
重新生成项目时显示了相同的错误消息。
我使用的是compose 1.1.1和Kotlin 1.6.10,因此似乎没有不兼容之处。
构建. gradle文件:
buildscript {
ext {
compose_ui_version = '1.1.1'
}
}// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
id 'com.android.application' version '7.3.1' apply false
id 'com.android.library' version '7.3.1' apply false
id 'org.jetbrains.kotlin.android' version '1.6.10' apply false
}
JVM目标为1.8
关于:
Android Studio Dolphin | 2021.3.1 Patch 1
Build #AI-213.7172.25.2113.9123335, built on September 29, 2022
Runtime version: 11.0.13+0-b1751.21-8125866 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Windows 10 10.0
GC: G1 Young Generation, G1 Old Generation
Memory: 1280M
Cores: 12
Registry:
external.system.auto.import.disabled=true
ide.text.editor.with.preview.show.floating.toolbar=false
1条答案
按热度按时间pkwftd7m1#
@Preview
不应该像这样应用,我在您的代码中看到了一些问题。1.一个
@Composable
函数应该是一个顶级函数,而不是在一个类中,所以将您的donut
函数移到MainActivity之外。另外,对于代码结构,如果您不介意它们对您的整个项目是公共的,我会将可组合对象移到一个不同的文件中,该文件的名称与该文件中的主要可组合对象的名称相同。如果您愿意,你可以把它和活动放在同一个文件中,并使它们成为私有的。1.可组合对象命名约定希望它们的名称以大写字母开头,这与我们习惯的Kotlin或Java函数/方法不同。
1.您的代码应该像在MainActivity中一样使用您的可组合对象,但您的代码使用的任何代码都不应具有
@Preview
注解。请从donut函数中删除@Preview
注解。1.创建另一个函数作为可预览的组合函数,像这样调用你的donut函数(它可以是私有的)