HarmonyOS 鸿蒙Next 如何在同一Slice中进行数值传递

HarmonyOS 鸿蒙Next 如何在同一Slice中进行数值传递 想实现的功能是通过输入体重和选择运动状态来利用公式(1500+(体重-50)x40+200x状态对应的数字)计算出喝水量并设置到上面的文本框中,请问这种逻辑怎么实现呢?尝试了一上午啥结果都没出来……大家给点思路吧

7 回复

楼主你好,

  1. 体重和运动量使用全局变量

  2. 监听体重输入框,更新表示体重的全局变量

  3. 监听运动量选择组件,并更新表示运动量的全局变量

  4. 每次更新体重或者运动量数据后后输入到公式计算得出结果。

更多关于HarmonyOS 鸿蒙Next 如何在同一Slice中进行数值传递的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


非常感谢!主要是不会写picker组件如何获取已选择的数据,昨天尝试了很多次都是软件直接闪退,最后用了最笨的办法实现了。

输入体重和选择运动状态,监听这两个组件的选择、输入、焦点事件等,在事件处理函数里面获取到体重、状态的值 ,计算出结果,再通过UITaskDispatcher来更新上面文本框里面的数值,可以看看这个帖子:非UI线程如何更新UI?-华为开发者论坛 (huawei.com)

非常感谢!同时还想问一下textfield如何实时更新文本框中的内容呢,每次输入的时候就一直是输入状态,结束不了,除非切换到其他页面才可以更新内容……,

试试这个监听焦点变化的方法能不能解决你的问题:

textField.setFocusChangedListener((component, isFocused) -> { if (isFocused) { // 获取到焦点 … } else { // 失去焦点 … } });

欢迎开发小伙伴们进来帮帮楼主

在HarmonyOS鸿蒙Next系统中,若你需要在同一Slice(切片)中进行数值传递,通常意味着你在一个Slice的不同组件或逻辑块之间共享数据。由于是在同一个Slice内,你可以直接访问Slice的成员变量或方法来实现这一点。

具体来说,你可以:

  1. 定义全局变量:在Slice类中定义一个成员变量来存储需要传递的数值。这样,Slice内的任何方法或组件都可以直接访问和修改这个变量。

  2. 使用方法参数:如果你在一个方法内需要用到另一个方法的计算结果,可以将该结果作为参数传递给需要它的方法。

  3. 通过界面组件:如果你需要在界面组件之间传递数值(例如,从一个Text组件读取数值并设置到另一个Text组件),可以通过Slice的布局文件和相应的组件ID来直接访问和修改组件的属性。

请注意,确保数值传递的过程中数据的同步性和一致性,特别是在多线程或异步操作的情况下。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部