【发布时间】:2018-06-04 16:41:39
【问题描述】:
我有 LiveData 对象,我对其执行 Transformations.map() 以在通知任何观察者之前将公式应用于数据。但是,我在 UI 上有一个删除功能,可以从数据库(房间)中删除对象,当 LiveData 更新时,Transformation.map() 会导致崩溃并出现以下错误“尝试调用虚拟方法'double java.lang .Double.doubleValue()' on a null object reference" 因为它正在观察的对象已从数据库中删除
我也尝试在第一次更新后删除观察者,但它仍然抛出相同的错误。
下面的代码我贴出来了,大家有什么解决办法吗?
public LiveData<String> getTotalValue() {
if (totalValueLiveData == null) {
loadTotalValue();
}
totalValue = Transformations.map(totalvalueLiveData, total -> String.format(Locale.getDefault(), "%.1f", UtilUserUnitsConverter.convertValue(total, userUnit)));
return totalValue;
}
final Observer<String> getTotalValueObserver = new Observer<String>() {
@Override
public void onChanged(@Nullable String totalValue) {
if (totalValue != null) {
totalValueTv.setText(totalValue);
}
viewModel.getTotalValue().removeObserver(getTotalValueObserver);
}
};
viewModel.getTotalValue().observe(this, getTotalValueObserver);
【问题讨论】:
标签: android android-room android-architecture-components android-livedata