您应该传递一些东西来识别图像,而不是传递图像本身。例如:
- 如果您从资源文件夹加载图像,则应传递资源 ID(即
R.drawable.your_image
);
- 如果您正在使用
assets
文件夹或某些远程 URL,您应该传递图像Uri
(i.e. /path_in_assets/your_image
or https://foo.bar/your_image
).
然后,您可以使用“ListActivity”将图像 ID 传递到下一个活动Intent
extras.
startActivity(
Intent(context, DetailsActivity::class.java).apply {
putExtra("imageId", yourImageId) // resource ID or image URL
}
)
在“DetailsActivity”中的onCreate
方法,您将获得图像 ID 并正确加载它......
class DetailsActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// for uri ID
val imageId = intent.getStringExtra("imageId")
// for resource ID
val imageId = intent.getIntExtra("imageId", -1)
setContent {
YourAppTheme {
YourScreen(imageId)
}
}
}
}
最后,在您的可组合项中,您可以使用以下命令根据资源 ID 加载图像:
Image(painter = painterResource(id = imageId), contentDescription = null)
或使用Coil https://coil-kt.github.io/coil/compose/对于 URL 资源:
Image(painter = rememberAsyncImagePainter(imageId), contentDescription = null)