kotlin-从一个片段更改多个片段的小数位

Posted

技术标签:

【中文标题】kotlin-从一个片段更改多个片段的小数位【英文标题】:kotlin- change decimal places on multiple fragments from one fragment 【发布时间】:2021-10-16 00:19:20 【问题描述】:

对于我的应用,我从蓝牙连接的传感器中读取了多个值。一个片段允许您编辑传感器,另一个片段显示 tableView 中的所有值。 在第三个设置片段上,我希望能够更改所有片段上出现的值的小数位。

我知道要更改十进制格式,我使用以下代码。

 var form = DecimalFormat("#,###.##") // number format

要将此格式添加到值中,请执行以下操作

form.format(temperature)

目前我有一个单选组,每个单选按钮设置为更改变量形式中的小数位数。

我如何使这种更改出现在所有片段中,而不仅仅是设置片段?我需要共享视图模型吗?

【问题讨论】:

【参考方案1】:

Shared ViewModel 非常适合这个问题,只需创建一个带有form 属性的ViewModel,并在每个片段中获取一个与活动关联的ViewModel 实例

private val viewModel: SharedViewModel by activityViewModels()

现在您可以将无线电更改上的form 属性更新为

radioGroup.setOnCheckedChangeListener  group, checkedId ->
    val format = when(checkedId)
        R.id.radio_two ->   TWO_DECIMAL_PLACES
        R.id.radio_three -> THREE_DECIMAL_PLACES
        else -> DEFAULT_FORMAT
     
     viewModel.form = DecimalFormat(format)

在此之后只需在显示数据之前使用此属性的值

【讨论】:

+1 但您可能希望将form 设为LiveData 或类似的(使用通常的设置器等),以便您的其他片段可以observe 它,并自动更新以反映新设置.但是,如果数据更新得足够频繁,您可以在显示时检查 form 的当前值,是的 - 任何最适合的!

以上是关于kotlin-从一个片段更改多个片段的小数位的主要内容,如果未能解决你的问题,请参考以下文章

如何更改片段 Kotlin

Kotlin 相同片段多个活动

如何在kotlin中从一个片段转到另一个片段?

如何使用 Kotlin 从 Android 中的片段访问另一个片段?

有没有办法以编程方式使用kotlin更改片段中的文本颜色?

从片段中的按钮单击打开导航抽屉(Kotlin)