Android房间总和查询返回null

Android房间总和查询返回null,android,kotlin,sum,android-room,Android,Kotlin,Sum,Android Room,我试图从TransactionDatabase中获取所有交易金额的总和,但它总是返回null。 谢谢你的帮助 这是我的片段 val transactionViewModelSum = ViewModelProvider( requireActivity(), TransactionViewModelFactory(requireActivity().application)) .get(TransactionViewMode

我试图从TransactionDatabase中获取所有交易金额的总和,但它总是返回null。 谢谢你的帮助

这是我的片段

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
的值。如果我说的不对,请在评论中给我写信