2017-12-01 24 views
-1

잘못된 인덱스, 그것은 잘 작동하지만 사고는 언제, 리더, 여기에 스택되어 추적 로그에 을 클릭 전스택 트레이스 E /의 uncaughtException : java.lang.IndexOutOfBoundsException : 내가 중포 기지 리더와 안드로이드 응용 프로그램을 개발하고 1

E /의 uncaughtException : java.lang.IndexOutOfBoundsException : 잘못된 인덱스 1, 크기는 1

E/AndroidRuntime입니다 : 치명적인 예외 :이 오류가 무엇입니까 주를

12-02 01:05:53.969 3508-3508/com.example.myapp E/UncaughtException: java.lang.IndexOutOfBoundsException: Invalid index 1, size is 1 
                      at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255) 
                      at java.util.ArrayList.get(ArrayList.java:308) 
                      at com.example.myapp.activity.LeaderboardActivity$4.onChildAdded(LeaderboardActivity.java:167) 
                      at com.google.android.gms.internal.zzaer.zza(Unknown Source) 
                      at com.google.android.gms.internal.zzagp.zzSu(Unknown Source) 
                      at com.google.android.gms.internal.zzags$1.run(Unknown Source) 
                      at android.os.Handler.handleCallback(Handler.java:739) 
                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                      at android.os.Looper.loop(Looper.java:135) 
                      at android.app.ActivityThread.main(ActivityThread.java:5254) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at java.lang.reflect.Method.invoke(Method.java:372) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
12-02 01:05:54.215 3508-3508/com.example.myapp E/AndroidRuntime: FATAL EXCEPTION: main 
                    Process: com.example.myapp, PID: 3508 
                    java.lang.IndexOutOfBoundsException: Invalid index 1, size is 1 
                     at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255) 
                     at java.util.ArrayList.get(ArrayList.java:308) 
                     at com.examle.myapp.activity.LeaderboardActivity$4.onChildAdded(LeaderboardActivity.java:167) 
                     at com.google.android.gms.internal.zzaer.zza(Unknown Source) 
                     at com.google.android.gms.internal.zzagp.zzSu(Unknown Source) 
                     at com.google.android.gms.internal.zzags$1.run(Unknown Source) 
                     at android.os.Handler.handleCallback(Handler.java:739) 
                     at android.os.Handler.dispatchMessage(Handler.java:95) 
                     at android.os.Looper.loop(Looper.java:135) 
                     at android.app.ActivityThread.main(ActivityThread.java:5254) 
                     at java.lang.reflect.Method.invoke(Native Method) 
                     at java.lang.reflect.Method.invoke(Method.java:372) 
                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
,

파란색 선이 모두 여기

if (leaderboards.get(1).getName().equalsIgnoreCase(displayName)) { 

leaderboardactivity.java

에서이 줄에 오류를 표시 leaderboardactivity.java에서 코드가

private void getLeaderboard() { 

     databaseLeaderboard.orderByChild("score").limitToLast((int) totalValue).addChildEventListener(new ChildEventListener() { 
      @Override 
      public void onChildAdded(DataSnapshot dataSnapshot, String prevChildKey) { 
       Leaderboard leaderboard = dataSnapshot.getValue(Leaderboard.class); 
       leaderboards.add(leaderboard); 

       if (leaderboards.size() >= (int) totalValue) { 
        Collections.reverse(leaderboards); 
        leaderboardAdapterNew.notifyDataSetChanged(); 
       } 

       if (leaderboards.size() == totalValue) { 


        if (leaderboards.get(0).getName().equalsIgnoreCase(displayName)) { 
         txtUname1.setText("Me"); 
        } else { 
         txtUname1.setText(leaderboards.get(0).getName()); 
        } 
        if (leaderboards.get(1).getName().equalsIgnoreCase(displayName)) { 
         txtUname2.setText("Me"); 
        } else { 
         txtUname2.setText(leaderboards.get(1).getName()); 
        } 
        if (leaderboards.get(2).getName().equalsIgnoreCase(displayName)) { 
         txtUname3.setText("Me"); 
        } else { 
         txtUname3.setText(leaderboards.get(2).getName()); 
        } 
내 잘못이다

누군가가 나를 알 수 있습니까?

+0

을 아무것도. 그래서이 오류가 발생했습니다 – Bek

+0

1 개의 항목 만 보유하고있는 배열에서 색인 1에 액세스하고 있습니다 (따라서 가장 높은 법률 색인이 0입니다) –

+0

내 대답을 확인하십시오. – diegoveloper

답변

1

예, 존재하지 않는 인덱스에 액세스하려고 :

if (leaderboards.size() == totalValue) { 

이 사람 :이

변경을

(1)가 당신이 leaderboard.get
if (leaderboards.size() == totalValue && totalValue > 2) { 
+0

감사합니다. 형제 님, 숙제하는 중입니다. 실제로 나는 개발자가 아니며, codecanyon에서이 프로젝트를 샀다. 이제는 내 메시지에 응답하지 않는다. 그래서 마침내 3 일 후에 나는 stackoverflow에서 질문했다. thankyou – sanjay

+0

문제가 없으므로 투표를 잊지 마세요. – diegoveloper