You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jetpack Compose添加@PreviewParameter后预览消失无报错如何解决?

Jetpack Compose @PreviewParameter 导致预览空白无报错解决方案

该问题90%以上是@PreviewParameter使用不规范,或是IDE缓存导致的静默失效,可按以下步骤逐一排查:

  • 检查PreviewParameterProvider实现是否合规
    • 提供者类必须直接继承PreviewParameterProvider<T>,泛型T需要和可组合函数中接收的参数类型完全一致,不可使用父类/子类类型替代
    • 提供者类必须有公开无参构造方法:如果是Kotlin内部类,需要标注为静态类/顶层类/object类,不允许依赖外部参数实例化
    • 提供者重写的values属性返回的序列不能为空,至少要包含1个元素
  • 检查预览可组合函数的参数配置
    • 预览函数的所有参数必须要么加@PreviewParameter注解,要么设置默认值,不允许存在无默认值也无预览注解的参数
    • 不要给同一个参数同时添加@PreviewParameter和其他用于注入的参数注解,避免优先级冲突
  • 检查是否是逻辑异常被静默吞掉
    • 临时注释掉可组合函数内部所有业务逻辑,仅保留参数相关的基础UI展示,验证预览是否能正常加载,再逐步放开代码定位触发异常的逻辑段
  • 排查IDE缓存问题
    如果以上操作都无效,大概率是Android Studio缓存异常,走以下流程修复:点击顶部菜单栏 File -> Invalidate Caches...,勾选「Clear file system cache and local history」后重启IDE即可。

附正确使用示例:

// 定义PreviewParameterProvider
class SampleUserProvider : PreviewParameterProvider<User> {
    override val values = sequenceOf(
        User(id = 1, name = "测试用户1", avatar = "xxx"),
        User(id = 2, name = "测试用户2", avatar = "yyy")
    )
}

// 声明预览函数
@Preview(showBackground = true)
@Composable
fun UserInfoCardPreview(
    @PreviewParameter(SampleUserProvider::class) user: User
) {
    AppTheme {
        UserInfoCard(user = user)
    }
}

内容的提问来源于stack exchange,提问作者YellowJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 14:36:04