arraylist不存储在SavedStateHandle

问题描述 投票:0回答:1

在我的ViewModel中,我已经建立了这样的建议:

类MyViewModel(私有Val SavedStateHandle:SavedStateHandle):ViewModel {

private var _wrongNumbers: ArrayList<CalculationEntity> = savedStateHandle.get<ArrayList<CalculationEntity>>("MY_KEY") ?: arrayListOf()
    set(value) {
        field = value
        savedStateHandle["MY_KEY"] = value
    }
然后,然后将元素添加到ViewModel内部的该数组列表:

fun addNumber(newNumber: Int) { _wrongNumbers.add(newNumber) }
,但是,在杀死该过程并恢复

SavedStateHandle

后,
_wrongNumbers
arraylist是空的。为什么这会发生?
    

android android-viewmodel
1个回答
0
投票
_wrongNumbers

实际上从未真正注册到

SavedStateHandle
add()
,因为您没有为其分配任何触发自定义设置器的值。调用
MY_KEY
不会调用设置器。
当该过程被杀死并且随后恢复了视图模型时,没有进入
SavedStateHandle
的进入,因此再次将其初始化为
arrayListOf()
一旦您初始化了一次,就可以解决问题。之后,在过程死亡时,对此的任何修改都将被正确地拾取。
您可以在Init块中这样做:

_wrongNumbers

	
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.