Kotlin中RecyclerView跳转新Activity图片无法显示问题排查
解决产品详情页图片无法加载的问题
你的问题出在ProductDetails.kt的两个关键错误:
- 传递的图片是字符串类型的URL,但你用
getIntExtra()去获取,类型不匹配导致拿到的是默认值0,自然无法加载。 - 你试图用
setImageResource()加载网络图片,这个方法是用来加载本地drawable资源ID的,不能加载网络图片。
修改后的ProductDetails.kt代码如下:
package com.fiham.retroapi import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.ImageView import android.widget.TextView import com.squareup.picasso.Picasso class ProductDetails : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_product_details) val thumbnail = findViewById<ImageView>(R.id.thumbnail) val instock = findViewById<TextView>(R.id.instock) val desc = findViewById<TextView>(R.id.desc) val imageUrl = intent?.getStringExtra("image") val price = intent?.getIntExtra("price", 0) val description = intent?.getStringExtra("description") // 用Picasso加载网络图片,和适配器里的方式一致 imageUrl?.let { Picasso.get().load(it).into(thumbnail) } instock.text = price.toString() desc.text = description } }
关键修改点说明:
- 把
getIntExtra("image", 0)改成getStringExtra("image"),匹配传递的字符串类型URL。 - 移除错误的
setImageResource()调用,改用Picasso加载网络图片,和适配器中加载缩略图的逻辑保持一致。 - 用
let安全处理imageUrl的空值情况,避免空指针异常。
这样修改后,详情页就能正确加载从适配器传递过来的产品图片了。
内容的提问来源于stack exchange,提问作者Md Mushaddek Al Mubdi
相关产品推荐
相关产品推荐

