android 如何使用ViewModel更改整数值

dgsult0t  于 2023-02-14  发布在  Android
关注(0)|答案(2)|浏览(141)

如何使用viewModel从另一个可组合对象更改一个可组合对象的整数值,以便当我们导航到那个可组合对象/屏幕时,我们应该看到更改后的值

private var _amt = mutableStateOf<Int>(5)
    var amt: MutableState<Int> = _hanging

    fun changeHangingToFortyFive(){

        amt.value = 45
      
    }
5uzkadbs

5uzkadbs1#

理想情况下,您应该提升父组合对象(可能是NavHost)中的视图模型,并传递一个lambda表达式来更新子组合对象中视图模型的值。
示例:向某个子组件传递回调函数,以从那里设置视图模型的值。

@Composable
fun parent(viewModel: ViewModel){
    
       
        childComposable(onValueChange= 
                      {changedValue -> viewModel.updateAmt(changedValue}
        )
     

}
vdzxcuhz

vdzxcuhz2#

您可以添加private set,而不是具有private _variablepublic variable

class MyViewModel: ViewModel() {
    var amt by mutableStateOf(5)
        private set
    
    fun updateAmt(newValue: Int) {
        amt = newValue
    }
}

在你的组合里。

val viewModel: MyViewModel = viewModel()
val value = viewModel.amt
//To update
viewModel.updateAmt(newValue)

相关问题