13장 TodoList NPE 질문
Closed this issue · 3 comments
안녕하세요,
최신으로 업데이트된 코드를 복붙하여 TodoList를 실행하면 항상 다음과 같은 오류가 뜹니다.
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.material.floatingactionbutton.FloatingActionButton.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
at com.example.todolist.EditActivity.insertMode(EditActivity.kt:47)
at com.example.todolist.EditActivity.onCreate(EditActivity.kt:28)
찾아보면 제일 처음 메인화면에서 id가 fab인 FloatingActionButton( 즉, + 버튼) 이 계속 null로 되는 것 같은데, 등록이나 초기화 같은 게 잘 안 이루어 진 듯하나 코드를 그대로 따라 넣은거라 몇 번을 확인해봐도 잘 안 됩니다.
해결할 방법이 있나요? 프로젝트 구조나 버전, Manifest, xml layout 등 설정해야 할 건 다 했는데 왜 안되는지 잘 모르겠네요.
제보 감사합니다.
해당 이슈는 Realm 버전을 업데이트해서 해결이 되었습니다.
프로젝트 수준의 build.gradle에 버전을 5.12.0 에서 7.0.0 으로 올리면 해결됩니다.
classpath "io.realm:realm-gradle-plugin:7.0.0"
변경사항은 반영해 두었습니다.
안녕하세요, 기존에는 6.0.0 버전이었고 7로 버전을 바꾸는 것으로는 해결이 안 되는 것 같습니다...
챕터 13을 열었을 때 바로 종료되는 이슈가 아니었군요.
기존 소스는 Realm 버전 때문에 바로 종료가 되었고 6.0.0 이후로 해결된 듯 합니다.
이 문제는 해결되었습니다.
하지만 정말 NPE 문제로 질문 주신 거였네요.
소스 코드를 잘 확인해 보셔야 할 듯 합니다.
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab"
코틀린 익스텐션이 알아서 임포트를 해 주기 때문에 임포트문이 잘못 되어 있는지도 확인해야 할 것 같고요.
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.content_main.*