마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 arraylist에러

0 추천

안드로이드 게시판 작업 질문입니다. 게시글을 클릭하면 글이 떠야되는데 이러한 에러가 나면서 뜨질 않습니다. 제목과 내용이 뜨는 엑티비티로 넘어가야되는데 arraylist에서 에러가나는건가요?

밑의 코드는 에러가나는 엑티비티입니다.

 

리스트를 클릭했을때 나오는 에러입니다. 필요하신 사진이 있으시면 말씀해주세요.

 

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.interiorshare, PID: 27217
    java.lang.IndexOutOfBoundsException: Index: 1, Size: 0
        at java.util.ArrayList.get(ArrayList.java:437)
        at com.example.interiorshare.ListActivity$2.onItemClick(ListActivity.java:79)
        at android.widget.AdapterView.performItemClick(AdapterView.java:330)
        at android.widget.AbsListView.performItemClick(AbsListView.java:1187)
        at android.widget.AbsListView$PerformClick.run(AbsListView.java:3179)
        at android.widget.AbsListView$3.run(AbsListView.java:4097)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7656)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

 

__AS (230 포인트) 님이 2022년 3월 14일 질문

1개의 답변

+2 추천
 
채택된 답변

에러메세지를 다시 한번 잘 확인해 보세요.

 java.lang.IndexOutOfBoundsException: Index: 1, Size: 0
at com.example.interiorshare.ListActivity$2.onItemClick(ListActivity.java:79)

에러의 원인은 IndexOutOfBoundsException, 에러가 나는 곳이 ListActivity.java의 79번째 라인이네요.

JavaDoc을 보시면 해당 에러에 대한 설명이 나옵니다.

https://docs.oracle.com/javase/8/docs/api/java/lang/IndexOutOfBoundsException.html

public class IndexOutOfBoundsException
extends RuntimeException

Thrown to indicate that an index of some sort (such as to an array, to a string, or to a vector) is out of range.

Applications can subclass this class to indicate similar exceptions.

이미 알고 있는 에러가 아니라면, JavaDoc 등을 찾으셔서 해당 에러가 어떤 의미인지 어떤 에러를 상속받았는지 확인하시기를 추천합니다. 그래야 에러처리를 할 수 있겠죠? 

IndexOutOfBoundsException는 사용하신 position이 Array나  List같은 Collection type의 범위를 벗어나서 생긴 에러입니다.
즉, List 의 갯수가 3라면 position은 0 - 2 사이여야 하겠죠?

님과 같은 경우는 리스트를 선택했기 때문에 IndexOutOfBoundsException가 발생하면 안되는 걸로 보이고 이건 로직 상의 버그로 여겨지기 때문에, 버그의 원인을 제거하는게 맞습니다. 따라서, Intent에 선택된 아이템을 넘길 때, 브레이크포인트를 지정하셔서 왜 에러가 나는지 디버깅을 하셔야 합니다. 이 부분은 올리신 코드로만으로는 해당 에러가 나지 않아야 하는데, 에러가 발생하는 걸로 봐서는 다른 코드와 관련이 되어 있지 않나 추측됩니다.

spark (227,930 포인트) 님이 2022년 3월 15일 답변
__AS님이 2022년 3월 17일 채택됨
...