843 B
843 B
Bug:
Kotlin 在 做 val 声明的对象 作为参数传递时,对象内的属性的值如果被修改,则原有对象的值也会产生变化,反之亦然。
今天遇到的问题时,
- 我在
FragmentA中将ObjectA写入到FragmentA和FragmentB两个页面共享的 一个ViewModel中, - 然后修改原来在
ObjectA的属性值,之后进入到FragmentB中 (这么做的原因是因为每一次进入FragmentA都需要ObjectA的属性值得到更新,但是放在启动FragmentB之前就直接清除了,这么做,导致了,后面的问题) - 最后在
FragmentB中获取到错误的值
解决办法:
- 把
val改成var, 或者修改Object清除属性值的时间点,把清除操作放到进入FragmentA开始运行时的回调当中