在JetPack Compose中手动重构所有AndroidView

2024-04-04

在我的项目中,我使用 JetPack Compose 和 AndroidView 来使用 XML 视图。

@Composable
fun MyComposable(
    message: String
) {

    AndroidView(
        factory = { context ->

            TextView(context).apply {
                text = message
            }

        })
}

我的问题是当我的message状态改变时,XML视图中AndroidView没有重组。里面有一个选项AndroidView观察状态变化?

ps:我已经简化了MyComposable例如


您可以使用update block.

来自doc https://developer.android.com/reference/kotlin/androidx/compose/ui/viewinterop/package-summary#AndroidView(kotlin.Function1,androidx.compose.ui.Modifier,kotlin.Function1):

The update由于重组,块可以运行多次(也可以在 UI 线程上),这是设置的正确位置View属性取决于状态。当状态改变时,该块将被重新执行以设置新的属性。请注意,该块也将在factory块完成

AndroidView(
    factory = { context ->

        TextView(context).apply {
            text = "Initial Value"
        }
    },
    update = {
        it.text =  message
    }
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在JetPack Compose中手动重构所有AndroidView 的相关文章

随机推荐

  • java.lang.ClassCastException:oracle.j2ee.ws.saaj.soap.TextImpl 无法转换为 javax.xml.soap.SOAPElement

    我通过尝试与具有 SOAPHeader Handler 实现的 Web 服务通信来得到这个 java lang ClassCastException 错误发生的原因是 String data Text SOAPElement is next
  • 使用 API v4.0 训练 QnA Maker

    我曾经使用 QnA Maker 的预览版 v3 0 API 具有此训练端点 可用于强化正确答案 https westus dev cognitive microsoft com docs services 597029932bcd590e7
  • 在相对布局中动态添加文本框时出现问题

    我在动态添加文本框到我的视图时遇到问题 更具体地说 文本框加法器可以工作 但我试图移动到它下面的按钮却不能 原始视图是以下超链接中的第一张图片 按下 按钮后 应在第二个文本框和决定按钮之间添加一个文本框 然后向下移动 按钮 使其位于新框旁边
  • ASP.NET MVC - 会话为空

    我在 net4 上有一个 MVC3 应用程序 其会话在开发环境中工作 但不在生产环境中工作 在生产中 我记录了会话 ID 然后在我从会话中设置和获取时它是相同的 当我尝试参加会议时 我得到了Null Exception 这是我访问会话的方式
  • 没有持久化:Fluent nHibernate 异常

    我收到异常 没有持久化 MVCTemplate Common Entities User 我谷歌这个问题并应用我找到的所有解决方案 但一切对我来说都没用 有谁知道我做错了什么 我的用户类代码是 public class User publi
  • 如何让Hibernate不删除表

    我正在使用休眠 每当我尝试添加记录时 它都会删除表并再次添加它 它从不使用现有的表并对其进行更改 这是我的相关部分hibernate cfg xml
  • Kivy/Python Countdown App 项目 kivy has no attribute 'built' 错误

    问题 什么是 没有属性 构建 错误 我需要做什么来更正此代码 以便它可以接受日期时间对象并显示倒计时 抱歉发了这么长的帖子 我已经提供了代码和链接 kv 文件 https github com tmusa CySat GroundStati
  • Excel:下拉列表取决于另一个下拉列表

    我想要在 Excel 中执行以下操作 相邻单元格中的两个下拉列表 下拉列表 1 下拉列表 1 Dropdown list 1 One Two Three 如果我在第一个单元格中选择一个 第二个单元格中的列表应包含以下选项 One 1 1 1
  • 当我运行我的 android UIAutomator 代码时,它显示错误

    当我运行我的 android UIAutomator 代码时 它显示以下错误 INSTRUMENTATION RESULT shortMsg java lang RuntimeExceptionINSTRUMENTATION RESULT
  • Objective-C instantiateViewControllerWithIdentifier 返回 nil

    一周后我打开了我的项目 看来对于所有新的UIViewController我创建于StoryBoard instantiateViewControllerWithIdentifier返回为零 一切ViewControllers项目中已经存在的
  • Flask 和 SQLAlchemy 以及 MetaData 对象

    这是我第一次使用这个环境 我愿意使用的 SQLAlchemy 部分只是允许我使用 autoload True 的表对象查询数据库的部分 我这样做是因为我的表已经存在于数据库 mysql 服务器 中 并且不是通过定义 Flask 模型创建的
  • 在单例上使用 Dispose 来清理资源

    我的问题可能更多地与语义有关 而不是与实际使用有关IDisposable 我正在致力于实现一个单例类 该类负责管理在应用程序执行期间创建的数据库实例 当应用程序关闭时 应删除该数据库 现在我正在处理这个删除Cleanup 应用程序在关闭时调
  • 如何在 Bash 脚本中从一系列 _# 文件名中选择最大数字

    我有一个包含文件的目录 heat1 conf heat2 conf heat
  • Silverlight 4 和浏览器外

    有谁知道是否可以对 app current mainwindow width 进行动画处理 以便在以编程方式调整 oob 应用程序窗口大小时获得一个带有缓动的漂亮动画 谢谢 最简单的方法是向页面添加滑块控件 滑块可以折叠 仅用于具有简单的动
  • VBA 自函数返回#VALUE!单元格出错,而在函数窗口中正确返回实际值

    我在下面写的函数是采用一个范围 我对其进行了一些条件格式设置 用于字体颜色 以及另一个用于比较颜色的单元格范围 功能是统计大范围内有多少个单元格与一个单元格范围具有相同的字体颜色 Function CountColor rng As Ran
  • 在logstash中使用docker GELF驱动程序env/labels

    Docker GELF 日志驱动程序允许env and labels日志选项 gelf 日志记录驱动程序支持 lab els 和 env 选项 它添加了额外的密钥extra字段 以下划线 为前缀 ref https docs docker
  • 分配给 Rails ActiveRecord 中的布尔字段时,值如何转换?

    我的问题的简短版本 在 Rails ActiveRecord 中 如果我有一个布尔字段并且我给它分配类似 abc or 2 然后它立即转换为false 价值1被投射到true and nil仍然是nil 为什么会这样呢 在哪里可以找到解释此
  • PHPUnit:存根多个接口

    我正在掌握 PHPUnit 到目前为止发现它非常容易使用 但我遇到了一个给我带来困难的测试用例 我正在针对一组预期对象实现的接口 一些是 PHP 的 一些是自制的 编写代码 并且 SUT 需要一个输入对象来实现多个接口 例如 class M
  • 计算两个模型的梯度

    假设我们正在构建一个基本的 CNN 来识别猫和狗的图片 二元分类器 此类 CNN 的示例如下 model Sequential Conv2D 32 3 3 input shape Activation relu MaxPooling2D p
  • 在JetPack Compose中手动重构所有AndroidView

    在我的项目中 我使用 JetPack Compose 和 AndroidView 来使用 XML 视图 Composable fun MyComposable message String AndroidView factory conte