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

JetPack Compose加载分类页面触发IllegalArgumentException错误求助

解决Compose中Landscapist Coil的IllegalArgumentException异常

触发的异常:

FATAL EXCEPTION: main Process: com.example.newsapp, PID: 4645 Java.lang.IllegalArgumentException: Wrong source was used: 2130968578, The source should be one of ImageBitmap, ImageVector, or Painter.

问题原因:

异常出现在ArticleContent中的CoilImage组件——error参数传入的是资源ID(R.drawable.breaking_news),但该参数要求的是Painter类型,与placeHolder的正确传参方式不一致,导致类型不匹配。

修改方案:

将CoilImage的error参数也改为用painterResource包装资源ID,修改后的代码片段如下:

@Composable
fun ArticleContent(articles: List<TopNewsArticle>, modifier: Modifier = Modifier) {
    LazyColumn {
        items(articles) { article ->
            Card(modifier.padding(8.dp), border = BorderStroke(2.dp, color = colorResource(id = R.color.purple_500))) {
                Row(
                    modifier
                        .fillMaxWidth()
                        .padding(8.dp)) {
                    CoilImage(
                        imageModel = article.urlToImage,
                        modifier = Modifier.size(100.dp),
                        placeHolder = painterResource(id = R.drawable.breaking_news),
                        error = painterResource(id = R.drawable.breaking_news) // 此处修改为painterResource包装
                    )
                    // 其余代码保持不变
                    Column(modifier.padding(8.dp)) {
                        Text(
                            text = article.title ?: "Not Available",
                            fontWeight = FontWeight.Bold,
                            maxLines = 3, overflow = TextOverflow.Ellipsis
                        )
                        Row(
                            modifier.fillMaxWidth(),
                            horizontalArrangement = Arrangement.SpaceBetween,
                        ) {
                            Text(text = article.author ?: "Not Available")
                            Text(text = MockData.stringToDate(article.publishedAt ?: "2021-11-10T14:25:20Z").getTimeAgo())
                        }
                    }
                }
            }
        }
    }
}

补充说明:

在你使用的Landscapist Coil 1.4.1版本中,CoilImage的placeHolder和error参数都要求传入Painter实例,不能直接传递资源ID。之前仅placeHolder做了正确转换,error直接传ID导致了类型不兼容的异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 05:07:46