5

我试图打开预览但无法打开它。

我尝试再次打开工作室,但预览只显示一个空白的白色屏幕,其中没有显示任何内容。当我再次打开它时,它会在预览端显示以下消息:

A successful build is needed before the preview can be displayed

构建过程已完成并尝试构建多次,但仍然显示相同的错误。

我在里面使用了简单的文本。

    @Composable
    fun Greeting(name: String) {
        Text (text = "Hello $name!")
    }

以下是我的全部内容:

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            Greeting("Android")
        }
    }

    @Composable
    fun Greeting(name: String) {
        Text (text = "Hello $name!")
    }

    @Preview
    @Composable
    fun PreviewGreeting() {
        Greeting("Android")
    }
}

如果有人知道这个问题,请分享答案。

4

8 回答 8

4

尝试这个:

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            Greeting("Android")
        }
    }

    @Composable
    fun Greeting(name: String) {
        Text (text = "Hello $name!")
    }
}
@Preview
@Composable
fun PreviewGreeting() {
    Greeting("Android")
}
于 2019-11-21T08:13:56.163 回答
3

我遇到了同样的问题,当我单击“使用 --info 运行”时收到的构建错误消息是:

e: This version (1.0.0-alpha13) of the Compose Compiler requires Kotlin version 1.4.30 but you appear to be using Kotlin version 1.5.0 which is not known to be compatible.  Please fix your configuration (or `suppressKotlinVersionCompatibilityCheck` but don't say I didn't warn you!).

所以我去了项目级别的 build.gradle文件,更改前的一个片段(您可以根据您的错误消息更改版本) -

buildscript {
    ..
    ..
    dependencies {
        classpath "com.android.tools.build:gradle:7.0.0-alpha15"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.0"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
    ..
    ..
}

因此,根据错误消息,我将kotlin-gradle-plugin版本从 1.5.0 更改为 1.4.30,如下所示:-

classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.0"

classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.30"

在此之后,我对 gradle 文件进行了“立即同步”,并在预览选项卡中进行了“构建和刷新”,希望兼容性问题消失了,我能够看到实时预览。

这可能不是最好的解决方案,因为我们需要降级 kotlin 版本,但它对我有用,你可以试一试!!

于 2021-05-19T15:29:01.133 回答
1

请按照以下步骤操作,为我工作:

  1. 文件 -> 无效缓存/重新启动
  2. 单击预览屏幕,其中显示“之前需要成功构建...”
  3. 使用以下命令构建和刷新: Option + Command + Shift + R(在 Mac 上),我猜 Alt + Ctrl + Shift + R 是 Windows 上的命令

在运行命令之前单击预览屏幕很重要。

于 2020-03-31T10:29:15.470 回答
1

请仔细按照开发人员的文档,请在 MainActivity 之外定义您的 Greeting 功能和 PreviewGreeting 功能,请执行以下操作

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.compose.Composable
import androidx.compose.unaryPlus
import androidx.ui.core.Text
import androidx.ui.core.dp
import androidx.ui.core.setContent
import androidx.ui.foundation.DrawImage
import androidx.ui.graphics.Color
import androidx.ui.layout.*
import androidx.ui.material.MaterialColors
import androidx.ui.material.MaterialTheme
import androidx.ui.res.imageResource
import androidx.ui.tooling.preview.Preview

class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContent {
        MaterialTheme(
            colors = MaterialColors(
                primary = Color.Black,
                background = Color.Cyan,
                secondary = Color.Magenta
            )
        ) {
            Greeting("Hello World")
        }
    }
}
}

@Composable
fun Greeting(name: String) {
val image = +imageResource(R.drawable.ic_launcher_round)

Column(crossAxisSize = LayoutSize.Expand, modifier = Spacing(16.dp)) {
    Text(name)
    Text(name)
    Text(name)
    HeightSpacer(50.dp)
    Container(expanded = true, height = 100.dp, width = 100.dp) {
        DrawImage(image)
    }

}

}

@Preview
@Composable
fun DefaultPreview() {
val image = +imageResource(R.drawable.ic_launcher_round)

Column(crossAxisSize = LayoutSize.Expand, modifier = Spacing(16.dp)) {
    Text("Android")
    Text("Android")
    Text("Android")
    Text("Hello")
    HeightSpacer(50.dp)
    Container(expanded = true, height = 100.dp, width = 100.dp) {
        DrawImage(image)
    }

}

}

然后在 device/emulator 中运行你的应用程序一次,然后你可以看到预览工作在此处输入图像描述

于 2019-11-27T07:20:26.800 回答
0

我相信您可能已经修复了它,但仍然会回答,因为还没有接受的答案。

我尝试从Empty Compose Activity项目模板创建项目。并显示上述错误。

文件有问题app:build.gradle

替换compileSdkVersion 'Google Inc.:Google APIs:23'compileSdkVersion 29

替换targetSdkVersion 23targetSdkVersion 29

清理并构建项目,问题应该得到解决。

于 2019-12-03T15:49:13.327 回答
0

我面临同样的问题,使缓存无效并重新启动对我有用。

于 2020-05-17T05:58:23.113 回答
0

当您第一次创建 compose 项目时,预览不起作用,这有点奇怪,一个非常简单的解决方案就是转到 Build -> Rebuild 菜单来重建您的项目,并且一切正常 :) Image Resource

于 2020-06-30T19:45:41.473 回答
0

建立关闭文件后,然后从左侧的文件树重新打开它,它应该可以工作。我没有预览,所以现在它说 NO preview found add preview by annotation compostables with @Preview

但我认为它对你有用

于 2021-02-25T17:50:28.183 回答