嘿,伙计们,我正在用我的视窗预览器.我在我的@Preview注释中遇到了这个奇怪的问题.我无法理解这一点.

Preview must be a top level declarations or in a top level class with a default constructor.

OptionsViewHolder.kt

class OptionsViewHolder(val binding: ItemLayoutBinding) : Recyclerview.ViewHolder(binding.root) {

    private val context = binding.root.context

    companion object {
        fun from(parent: ViewGroup): OptionsViewHolder {
            return OptionsViewHolder(
                ItemLayoutBinding.inflate(
                    LayoutInflater.from(parent.context),
                    parent,
                    false
                )
            )
        }
    }

   fun bindChoice() {
        binding.itemComposable.setContent {
            Options()
        }
    }

    @Composable
    fun Options() {
       xyz..
    }

    @Preview
    @Composable
    fun OptionsPreview(){
        Options()
    }
}

推荐答案

如错误所示.预览必须是顶级函数(类外的函数),或者位于具有默认构造函数的类中.

我的建议是,要么将您的可合成内容和预览从类中提取到同一个文件中,要么将它们全部提取到一个单独的文件中,并将内容可合成内容和视频所有者分开.

OptionsViewHolder.kt

class OptionsViewHolder(val binding: ItemLayoutBinding) : Recyclerview.ViewHolder(binding.root) {

    private val context = binding.root.context

    companion object {
        fun from(parent: ViewGroup): OptionsViewHolder {
            return OptionsViewHolder(
                ItemLayoutBinding.inflate(
                    LayoutInflater.from(parent.context),
                    parent,
                    false
                )
            )
        }
    }

    fun bindChoice() {
        binding.itemComposable.setContent {
            Options()
        }
    }
}

@Composable
fun Options() {
    xyz..
}

@Preview
@Composable
fun OptionsPreview() {
    Options()
}

Android相关问答推荐

无法安装后重新编译android代码'

Android Studio -未显示布局预览(不推荐使用安全管理器)

我怎样才能画一条线在喷气背包组成和有一个自定义的角落?

Android Compose - 为什么 Canvas 中的drawText在底部被切断而不是在顶部?

可组合函数无限地从视图模型获取值

如何在我的sqlite数据库中获取某个玩家的分数

页面标题未显示在内容页面上

SQLite Kotlin 问题 - 没有数据库

在 Material 3 TopAppBar 代码的哪个位置定义了填充?

java.lang.ExceptionInInitializerError -- 原因:java.lang.NullPointerException

如何从包装在泛型中的 retrofit 调用中检索密钥?

用作输入参数的 Lambda 函数导致重组

为什么我要使用 $version 而不是2.7.0?

自定义 Compose Arrangement 以在 LazyRow/LazyColumn 的开头和结尾添加额外的间距

compose 更改列表元素但lazyColumn不更改

如何在jetpack compose中创建水印文字效果

WindowManager 内的 RecyclerView 不更新

如何根据加载图像的 colored颜色 绘制边框?

如何在stroke android drawable中设置渐变

如何从构建的流对象中发出值