首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >当包含可绘图的整数变量传递给painterResource函数时,为什么Android中不呈现图像?

当包含可绘图的整数变量传递给painterResource函数时,为什么Android中不呈现图像?
EN

Stack Overflow用户
提问于 2022-12-04 05:12:32
回答 2查看 35关注 0票数 0

我需要根据特定的用户交互来显示不同的图像。因此,我将可绘制的资源ID存储在一个整数变量中。但是,当我将这个变量传递到图像的painterResource函数时,图像不会呈现。

代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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)
EN

回答 2

Stack Overflow用户

发布于 2022-12-04 05:20:34

解决此问题的一种方法是使用Image组件的“资源”属性访问可绘制资源。然后,可以使用getDrawable函数根据存储在imageToDisplay变量中的资源ID检索可绘制文件。

下面是如何修改代码以实现此目的的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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)

或者,您也可以使用imageResource函数而不是painterResource来设置图像组件的可绘制资源。代码将如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
val img = R.drawable.img1
val img2 = R.drawable.img2

// imageToDisplay is assigned based on certain conditions.
var imageToDisplay = img

Image(imageResource = imageToDisplay, contentDescription = null)
票数 1
EN

Stack Overflow用户

发布于 2022-12-04 07:30:03

您提供的代码正在使用可用的可绘图,除非您包含了更多的详细信息,我们只能猜测,但当您说

I需要根据特定的用户交互来显示不同的图像。…

…imageToDisplay是根据特定的条件分配的。

…当我将这个变量传递到图像的painterResource函数时,图像不会呈现。

我最好的猜测是,在执行某些条件操作时,由于某种原因,这些代码的可组合性不是重新组合的,也不是更新的。

再说一遍,我们只能猜测,所以你可以尝试这个或只是使用这个作为一个参考。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@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)
}

逻辑有点无用,但它试图指出的是使用可变状态来进行可组合的重新组合。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74675941

复制
相关文章
MySQL信号量等待日志阅读
lock_word的初始值为X_LOCK_DECR,每次添加x锁时原子递减X_LOCK_DECR,每次添加S锁时原子递减1。每次添加SX锁时递减X_LOCK_HALF_DECR。如果读写锁支持递归写,那么第一个递归写锁加锁成功时,lock_word 依然原子递减X_LOCK_DECR,而后续的递归写锁加锁成功是,lock_word 只是原子递减1。
donghy
2022/09/17
1.1K0
有界数组模板类(类模板)
编写有界数组模板BoundArray(即检查对数组元素下标引用并在下标越界时终止程序的执行),能够存储各种类型的数据。要求实现对数组进行排序的方法sort,及对数组进行查找的方法search。(不能直接调用C++自带的排序或查找函数)
叶茂林
2023/07/30
1620
做网站收益如何?能满足生活保障吗?
看到前两天有一位网友在泪雪博客留言问到子凡我做网站收益如何?能满足生活保障吗?仔细一想好像这个问题应该是所有做网站的人都会思考的一个问题,那么下面子凡就根据自己的亲身经历和感受来回答一下这个问题,顺便整理成文发布出来。
张子凡
2022/11/02
1.3K0
做网站收益如何?能满足生活保障吗?
现在的工程结构能满足你的需求吗?
创建单模块工程相信很多人都手到擒来。但如果项目很大,功能很多,你还能继续使用单模块工程吗?项目过大,结构肯定也越来越复杂这时候如果你继续使用单模块工程,进展就会遇到各种问题。同时维护起来也是很麻烦的事情。这个时候你就可以考虑将功能细化,使用多模块工程来替代单模块了。
田维常
2019/09/12
9950
现在的工程结构能满足你的需求吗?
SaaS企业要满足客户的定制开发需求吗?
本文作者 吴昊:腾讯SaaS加速器导师、纷享销客天使投资人、前执行总裁,具有20年企业信息化和6年SaaS营销团队创新经验。 前天和一个做SaaS的团队交流,他们处在我说的《SaaS创业路线图》中的“产品打磨”阶段 —— 产品已经做出来,也找到了少量试用客户。 这时候遇到一个大家常见的问题:目标客户提出的需求超越了我们初定的需求边界,要不要做定制开发?这个问题,不少创业公司都会遇到。每家都有难念的经,具体情况各不相同,今天我为大家写几条原则吧。 第一,明确自己是做产品的,还是做项目的。做项目的公司
腾讯SaaS加速器
2020/06/09
1.1K0
信号量--System V信号量 与 Posix信号量
信号量是一种计数器,用来控制对多个进程/线程共享的资源进行访问。常和锁一同使用。 在某个进程/线程正在对某个资源进行访问时,信号量可以阻止另一个进程/线程去打扰。 生产者和消费者模型是信号量的典型使用。
看、未来
2020/08/26
1.7K0
聊聊有界上下文
在这篇文章中,我将分享我对有界上下文的看法。有界上下文是什么意思?为什么需要有界上下文?
双愚
2018/07/09
2K0
聊聊有界上下文
基于数组的有界阻塞队列 —— ArrayBlockingQueue
" 在阅读完和 AQS 相关的锁以及同步辅助器之后,来一起阅读 JUC 下的和队列相关的源码。先从第一个开始:ArrayBlockingQueue。 "
程序员小航
2020/11/23
9100
基于数组的有界阻塞队列 —— ArrayBlockingQueue
java并发编程(五)
阻塞队列:在某些情况下,会挂起线程,一旦条件满足,被挂起的线程会自动唤醒。而阻塞队列无需关心什么时候阻塞,什么时候唤醒。
疯狂的KK
2020/03/25
3010
brpc小课堂:有界队列BoundedQueue
brpc实现了一个“有界队列”的类模板BoundedQueue。先说一下什么是有界队列。 所谓有界队列表示的就是一个队列其中的容量是有限的(固定的),不能动态扩容的队列。这种听起来没有vector那种自动扩容能力的容器,主要还是全面为了性能考虑的。一般也是用作生产者和消费者模式,当队列容量已满的时候,一般就表示超过了这个队列的最大吞吐能力,故而拒绝加入新的任务。
果冻虾仁
2021/12/30
7190
brpc小课堂:有界队列BoundedQueue
信号量
1.初始化信号量 函数原型:int sem_init(sem_t* sem,int pshared,unsigned int value) 参数: sem:指定是哪一个信号量 pshared:指定信号量的类型,值为0表示是在当前进程使用的局部信号量,否则该信号量就可以在多个进程中共享。 value:指定信号量的初始值,可以理解为最多由多少个线程可以访问共享资源。 返回值:
lexingsen
2022/02/25
4740
信号量
Hystrix内部提供了两种模式执行逻辑:信号量和线程池。默认情况下,Hystrix使用线程池模式。那什么是信号量呢?
只喝牛奶的杀手
2019/08/26
6630
Python中线程同步与线程锁「建议收藏」
概念 * 线程同步,线程间协同,通过某种技术,让一个线程访问某些数据时,其他线程不能访问这些数据,直到该线程完 成对数据的操作。
全栈程序员站长
2022/08/31
7320
Python中线程同步与线程锁「建议收藏」
学会等待
摘要总结:学会等待是一种能力——控制自己的能力。当内心特别热衷于某一个东西的时候,提醒一下自己很重要。
雷大亨
2017/12/29
1.4K0
分布式锁中的王者方案 - Redisson
如果你之前是在用 Redis 的话,那使用 Redisson 的话将会事半功倍,Redisson 提供了使用 Redis的最简单和最便捷的方法。
macrozheng
2021/07/02
1.6K0
分布式锁中的王者方案 - Redisson
临界区 互斥量 事件 信号量_互斥信号量与同步信号量
1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。 2、互斥量:为协调共同对一个共享资源的单独访问而设计的。 3、信号量:为控制一个具有有限数量用户资源而设计。 4、事 件:用来通知线程有一些事件已发生,从而启动后继任务的开始。
全栈程序员站长
2022/09/23
8310
基于链表的有界阻塞队列 —— LinkedBlockingQueue
" 上一节看了基于数据的有界阻塞队列 ArrayBlockingQueue 的源码,通过阅读源码了解到在 ArrayBlockingQueue 中入队列和出队列操作都是用了 ReentrantLock 来保证线程安全。下面咱们看另一种有界阻塞队列:LinkedBlockingQueue。 "
程序员小航
2020/11/23
5920
基于链表的有界阻塞队列 —— LinkedBlockingQueue
分布式锁中的王者方案 - Redisson
上篇讲解了如何用 Redis 实现分布式锁的五种方案,但我们还是有更优的王者方案,就是用 Redisson。
悟空聊架构
2022/05/13
1.3K0
分布式锁中的王者方案 - Redisson
Selenium4+Python3系列(六) - Selenium的三种等待,强制等待、隐式等待、显式等待
用一句通俗易懂的话就是:等待元素已被加载完全之后,再去定位该元素,就不会出现定位失败的报错了。
软件测试君
2022/12/05
3K0
Selenium4+Python3系列(六) - Selenium的三种等待,强制等待、隐式等待、显式等待
点击加载更多

相似问题

带有Web组件的Dart服务器

10

在web服务器中运行dart

41

Dart: web web/src

13

节点web服务器崩溃

20

在dart中使用parseInt时服务器崩溃?

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文