i am trying to add two number whose type is Long
@Entity
data class Monitor(
@PrimaryKey
@NonNls
var parentUsageDuration: Long? = 0L,
var childUsageDuration: Long ?= 0L
)
there is two number
var parentTime = homeViewModel.getMonitorAllDataItem()?.parentUsageDuration
var childTime = homeViewModel.getMonitorAllDataItem()?.childUsageDuration
when i try to add this two number
var totalTime = parentTime childTime
I am getting error
required Long found Long ?
unable to add this two number please help me to fix this issue.
CodePudding user response:
Problem is that parentTime
and childTime
numbers are not just numbers. They are numbers or nulls - notice ?
char in Long?
. It is not possible to perform math operations on nulls, so we need to decide what do to in the case of nulls. Most common solutions are:
Set totalTime
to null if at least one of numbers is null:
var totalTime = if (parentTime == null || childTime == null) null else parentTime childTime
Replace nulls with some defaults, e.g. 0
:
var totalTime = (parentTime ?: 0) (childTime ?: 0)
Or, if we are sure that in fact these values can't be null:
var totalTime = parentTime!! childTime!!
If this is the case then you should also consider changing the type of parentUsageDuration
and childUsageDuration
to not-nullable Long
, but it really depends on your specific case.
CodePudding user response:
parentTime
and childTime
have type Long?
while totalTime
has type Long
.
You can fix it via changing type. Like
var parentTime:Long = homeViewModel.getMonitorAllDataItem()?.parentUsageDuration!!