Android房间总和查询返回null
我试图从TransactionDatabase中获取所有交易金额的总和,但它总是返回null。 谢谢你的帮助 这是我的片段Android房间总和查询返回null,android,kotlin,sum,android-room,Android,Kotlin,Sum,Android Room,我试图从TransactionDatabase中获取所有交易金额的总和,但它总是返回null。 谢谢你的帮助 这是我的片段 val transactionViewModelSum = ViewModelProvider( requireActivity(), TransactionViewModelFactory(requireActivity().application)) .get(TransactionViewMode
val transactionViewModelSum = ViewModelProvider(
requireActivity(),
TransactionViewModelFactory(requireActivity().application))
.get(TransactionViewModel::class.java)
transactionViewModelSum.getTransactionByDate().observe(viewLifecycleOwner, Observer {
totalAmount = it.div(10)
})
if(totalAmount == null ) binding.cpbMainExpenses.progress = 15f else binding.cpbMainExpenses.progress = totalAmount!!.toFloat()
我的刀
@Query("SELECT total(amount) FROM `Transaction`")
fun getTransactionByDate(): LiveData<Double>
@Query(“从“交易”中选择总额(金额))
fun getTransactionByDate():LiveData
我的存储库
fun getTransactionByDate(): LiveData<Double> {
return transactionDao.getTransactionByDate()
}
fun getTransactionByDate():LiveData{
return transactionDao.getTransactionByDate()
}
我的视图模型
private val liveTransactionDate = repository.getTransactionByDate()
...
fun getTransactionByDate(): LiveData<Double> = liveTransactionDate
private val liveTransactionDate=repository.getTransactionByDate()
...
fun getTransactionByDate():LiveData=liveTransactionDate
您的查询看起来不错。我认为这个transactionViewModelSum.getTransactionByDate().observe()的异步工作中存在问题。
如果(totalAmount==null)binding.cpbMainExpenses.progress=15f else binding.cpbMainExpenses.progress=totalAmount,请尝试放入!!。toFloat()
在类似于下面的观察者lambda中:
transactionViewModelSum.getTransactionByDate().observe(viewLifecycleOwner, Observer {
totalAmount = it.div(10)
if(totalAmount == null ) binding.cpbMainExpenses.progress = 15f else binding.cpbMainExpenses.progress = totalAmount!!.toFloat()
})
我认为在getTransactionByDate
发出值之前,您尝试读取totalAmount
的值。如果我说的不对,请在评论中给我写信