Почему изображение не отображается в Android Studio, когда целочисленная переменная, содержащая рисуемый объект, передается функции painterResource?
У меня есть требование отображать разные изображения на основе определенных взаимодействий с пользователем. Итак, я сохраняю идентификатор ресурса для рисования в целочисленной переменной. Однако, когда я передаю эту переменную в функцию painterResource изображения, изображение не отображается.
Код выглядит так:
val img = R.drawable.img1
val img2 = R.drawable.img2
// imageToDisplay is assigned based on certain conditions.
var imageToDisplay = img
Image(painter = painterResource(imageToDisplay), contentDescription = null)
1 ответ
Предоставленный вами код работает «как есть», используя доступные чертежи в моем конце, если вы не включите более подробную информацию, тогда мы можем только догадываться, но когда вы сказали
У меня есть требование отображать разные изображения на основе определенных взаимодействий с пользователем. …
и
… imageToDisplay назначается на основе определенных условий.
и
… когда я передаю эту переменную в функцию painterResource изображения, изображение не отображается.
Мое лучшее предположение заключается в том, что компонуемые эти коды не перекомпоновываются или не обновляются по какой-то причине, когда вы выполняете какое-то условное действие.
Опять же, мы можем только догадываться, так что вы можете попробовать это или просто использовать это как ссылку.
@Composable
fun DynamicImageComposable() {
val img = R.drawable.img
val img2 = R.drawable.img
// don't use ordinary variable, convert it to a mutable State instead
var imageToDisplay by remember {
mutableStateOf(img) // just use any drawable you want as the initial value
}
// when you change this to img2, this composable is expected to re-compose
imageToDisplay = img
Image(painter = painterResource(imageToDisplay), contentDescription = null)
}
Логика немного бесполезна, но она пытается указать на использование изменяемого состояния для повторной компоновки компонуемого.