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

Jetpack Compose跨模块@PreviewParameter失效问题求助

解决Jetpack Compose跨模块@PreviewParameter空指针问题

针对你遇到的跨模块使用@PreviewParameter时出现的空指针异常,以下是几个可行的解决方案:

1. 确保Core模块包含Compose预览依赖

跨模块使用预览参数时,Core模块必须引入Compose预览相关的依赖,否则预览运行时无法加载PreviewParameterProvider类,导致参数值为null。

在Core模块的build.gradle.kts(或build.gradle)中添加以下配置:

android {
    buildFeatures {
        compose true
    }
    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.11" // 与你使用的Compose BOM 2024.05.00版本匹配
    }
}

dependencies {
    implementation(platform("androidx.compose:compose-bom:2024.05.00"))
    implementation("androidx.compose.ui:ui")
    implementation("androidx.compose.ui:ui-tooling-preview") // 关键依赖,PreviewParameterProvider属于此库
    debugImplementation("androidx.compose.ui:ui-tooling")
    debugImplementation("androidx.compose.ui:ui-test-manifest")
}

2. 确认PreviewParameterProvider的访问权限

确保PlayerPreviewParameterProvider是public访问级别(Kotlin中默认就是public,无需额外修饰符),避免使用internal,否则Player Management模块无法访问该类。

3. 清理构建缓存并重建项目

Android Studio的构建缓存可能导致跨模块类加载异常,执行以下操作:

  • 点击菜单栏File > Invalidate Caches...,选择Invalidate and Restart
  • 执行./gradlew clean build(终端命令)清理并重新构建所有模块

4. 添加参数默认值作为临时 workaround

如果上述方法暂时无效,可以给预览函数的参数添加nullable默认值,避免空指针:

@OptIn(ExperimentalMaterial3Api::class)
@Preview
@Composable
fun PlayerScreenPreview(
    @PreviewParameter(PlayerPreviewParameterProvider::class) players: List<Player>? = PlayerPreviewData.players,
) {
    val safePlayers = players ?: PlayerPreviewData.players
    val width = LocalConfiguration.current.screenWidthDp.dp
    val columns = when {
        width < COMPACT_WIDTH.dp -> 1
        else -> 2
    }

    BaseScreenPreview { scrollBehavior ->
        PlayerScreen(
            modifier = Modifier.fillMaxSize(),
            columns = columns,
            scrollBehavior = scrollBehavior,
            playersListUiState = Players(safePlayers),
            onPlayerUiEvent = {}
        )
    }
}

补充说明

错误日志中出现的.test进程是正常现象——Compose预览会启动测试进程来渲染预览界面,无需额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 10:05:18