데이터읽기(동기)강좌에 버그가 있는것 같습니다.
173
작성한 질문수 13
데이터 읽기 (동기) 강좌의
마지막 부분 메모리 누수를 막기위해서 아래와 같이 사용한다고 말씀해 주신 부분에
문제가 있어 보입니다.
테스트해본 결과
문서추가를 눌러서 새로운 문서를 추가해놓고
기존에 문서중 하나를 삭제한 상태에서
새로 추가했던 문서의 필드를 수정할경우 에러가 발생합니다.
DocumentChange.Type.ADDED -> {
realTimeArrayList.add(item.document.toObject(UserDTO::class.java)) // 오브젝트만 담음
realtimeKeyArrayList.add(item.document.id) // 문서의키값만 가져다 담음
}
DocumentChange.Type.MODIFIED -> updateItem(item.document.id, item.document.toObject(UserDTO::class.java))
DocumentChange.Type.REMOVED -> deleteItem(item.document.id)
====================================
06-02 20:45:20.777 3940-3940/com.test.good E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.test.good, PID: 3940
java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
at java.util.ArrayList.set(ArrayList.java:453)
at com.test.good.ReadActivity.updateItem(ReadActivity.kt:87)
at com.test.good.ReadActivity$onCreate$2.onEvent(ReadActivity.kt:73)
at com.test.good.ReadActivity$onCreate$2.onEvent(ReadActivity.kt:16)
at com.google.firebase.firestore.zzi.onEvent(Unknown Source:16)
at com.google.android.gms.internal.zzevc.zza(Unknown Source:6)
at com.google.android.gms.internal.zzevd.run(Unknown Source:6)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
답변 2
0
답변주신데로
realTimeKeyArrayList.removeAt(position)
break
를 추가하니까 됩니다~ㅋ;
break 꼭 써줘야 되나 봅니다... break 안써주면 또 다른 에러가 발생하네요^^ㅎㅎ;
0
안녕하세요 하울입니다.
일단 제가 추측되는 에러로는
fun deleteItem(deleteKey: String) {
for ((position, item) in realTimeKeyArrayList.withIndex())
if (deleteKey == item) {
realTimeArrayList.removeAt(position)
realTimeKeyArrayList.removeAt(position)
break
}
}
코드를 이렇게 수정해주시면 에러가 발생되지 않을 것 같습니다.
아마 삭제하는 부분에 두가지 코드를 삭제해야 BoundsException이 발생되지 않을뜻한데 하나만 삭제해서 발생한것 같습니다.
혹시 조치하고 이상이 없다고 말씀해주시면 코드를 보완해 놓도록 하겠습니다.
개인정보보호 설정에 의해 이 동영상은 Vimeo에서 재생할 수 없습니다.
0
1168
0
환불도 안되는건가요?
0
221
0
Nested data class 문의 드립니다.
0
191
1
CoordinatorLayout 도 강의해주세용^^
0
257
1
구글 로그인 옵션 요청에서
0
286
2
정말로 버전 차이가 많이 나는것 같습니다. 꼭 답변 부탁 드립니다
0
192
1
각 객체를 사용하는 이유와 방법의 설명이 없어서 안드로이드 처음하는 사람은 어렵네요
0
159
0
프로젝트 실행 시 "Caused by: java.net.SocketException: Connection reset" 라는 에러가 뜨는데 이게 뭔가요?
0
437
0
회원가입은되는데 로그인은 되지않습니다.
0
252
1
혹시 답변 부분에 하이퍼링크 추가할 수 있는 방법은 아녜 없는건가요?
0
494
1
edit_text에 글이 set되는 것은 비동기식으로 작동하는 건가요?
0
169
1
recyclerview 어댑터 관련해서 질문 남깁니다!
0
450
3
Type mismatch error
0
271
1
혹시 자바로 만들어진 안드로이드 프로젝트 안에 코틀린 파일을 쓸 수 있나요?
0
261
1
풀필먼트를 호출하고 결과를 받아오는 방법...
0
239
1
애는굳이 마법봉 안쓰는 이유가있나요?
0
208
1
기존으로 만들때 <RelativeLayout으로 시작하지 않고 <android.support.constraint.ConstraintLayout로 시작됩니다
0
169
1
여기서 toString이 무슨 역할을 하는지 잘 모르겠습니다.
0
192
1
질문드립니다.
0
150
1
질문드립니다.
0
143
1
질문드립니다.
0
142
1
질문드려요~
0
143
1
nested class의 subject는 Subject가 아니여도 인식하나요?
0
118
1
제어문 강의 예제 질문입니다
0
251
1





