首页 > 解决方案 > 从 jetpack compose 中的另一个小部件访问小部件

问题描述

使用传统的 XML,您可以使用它的 id 或标签获取 View 的实例。

这在jetpack compose中怎么可能?

Card(elevation = 1.dp, shape = RoundedCornerShape(8.dp), color = Color.Transparent) {
      // TARGET is here
      Padding(padding = 8.dp) {
           Text(text = "Net stat", style = +themeTextStyle { h6 })
      }
}
Text(text = netStatusState.value)
HeightSpacer(height = 10.dp)
Divider()
HeightSpacer(height = 10.dp)
Card(elevation = 1.dp, shape = RoundedCornerShape(8.dp), color = Color.Transparent) {
     Padding(padding = 8.dp) {
           Clickable(onClick = {
                            // MODIFY (Remove, change element, update attr) the target
                     }) {
              Button(text = "Click me if you can")
           }
     }
}

它甚至需要这样的功能,还是全部使用 state 完成

标签: androidandroid-jetpack-compose

解决方案


可组合项没有 ID,您通常不需要获取可组合项的实例。将可组合函数视为打印语句会很有帮助。就像 println() 函数获取一些数据并将其写入控制台一样,可组合函数获取数据并将这些数据测量/布局/绘制到屏幕上。

如果您更改数据,并且数据位于使用 @Model 注释的类中,Jetpack compose 系统将使用新状态再次自动调用相应的函数,并且您的 UI 将被更新。


推荐阅读