Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter databaseError
이것은 코틀린에서 일어날 수 있는 오류중 하나이다.
예제가 하나 있다.
수정 전
likePostsRef!!.runTransaction(object : Transaction.Handler {
override fun doTransaction(mutableData: MutableData?): Transaction.Result {
var likeRefResult: CoinLike? = null
likeRefResult = mutableData!!.getValue<CoinLike>(CoinLike::class.java)//참조한 ref의 값을 가져옴
......
return Transaction.success(mutableData)
}
override fun onComplete(databaseError: DatabaseError, b: Boolean,
dataSnapshot: DataSnapshot) {
// Transaction completed
Log.d("CalCoinFirebase", "postTransaction:onComplete:$databaseError")
}
})
이 로직은 Firebase를 통해서 데이터를 가져오는 로직이다.
java code가 되어 있는 것을 자동으로 convert하였고
컴파일 하면서 오류가 일어나지 않았다.
하지만,
Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter databaseError
오류가 발생하였다.
어느 위치에서 발생했는 지 알아낼 수 없기 때문에 잡기가 상당히 어려웠다.
정답은 override 함수에서 온 변수에서 null 값이 일어났기 때문에 발생하였다.
코드를 하나 수정 했고 오류가 일어나지 않았다.
수정 후
likePostsRef!!.runTransaction(object : Transaction.Handler {
override fun doTransaction(mutableData: MutableData?): Transaction.Result {
var likeRefResult: CoinLike? = null
likeRefResult = mutableData!!.getValue<CoinLike>(CoinLike::class.java)//참조한 ref의 값을 가져옴
......
return Transaction.success(mutableData)
}
override fun onComplete(databaseError: DatabaseError?, b: Boolean,
dataSnapshot: DataSnapshot) {
// Transaction completed
Log.d("CalCoinFirebase", "postTransaction:onComplete:$databaseError")
}
})
override 함수에서 데이터 값이 오는데
해당 값이 null 값이라서 발생한 오류였고 간단하게 물음표 하나만 입력하게 되면
잘 처리 된다.
'Android 공부' 카테고리의 다른 글
AAPT2 error: check logs for details 해결 방법 (0) | 2018.10.19 |
---|---|
(Solve) Error Caused by: java.lang.IllegalStateException: Unexpected inputs: ImmutableJarInput{name=com.google.firebase:firebase-analytics-license (0) | 2018.07.25 |
(Solve) Android Studio Duplicate photos on sharing (0) | 2018.07.25 |
(Solve) Activity class does not exist (Error type 3) (10) | 2018.07.21 |
Android 공유하기 기능 만들기 (0) | 2018.07.17 |