2013-02-27 37 views
0

在我的應用程序中,我想要左右導航並更改textView值,同時單擊下一個和後退按鈕。但是當索引大於項目數時,我會收到強制關閉錯誤。這是我的代碼。無效的索引3,大小爲3 Android

String[] seperated = imag; 

     count_image = seperated.length-1; 

     pager = (ViewPager) findViewById(R.id.pager); 
     pager.setAdapter(new ImagePagerAdapter(seperated)); 

     pager.setCurrentItem(pagerPosition); 

     options = new DisplayImageOptions.Builder() 

     .showImageForEmptyUri(R.drawable.ic_launcher) 

     .cacheOnDisc() 

     .imageScaleType(ImageScaleType.IN_SAMPLE_INT) 

     .build(); 

     pager.setOffscreenPageLimit(3); 



     @Override 

    public void onClick(View v) { 

     // TODO Auto-generated method stub 


     switch (v.getId()){ 

     case R.id.boutton_slide_droite: 


      focus_image = pager.getCurrentItem(); 

      //get current image index 

      focus_image++; 


      //move to next record 

      position++; 

      System.out.println("focus_image_up:"+focus_image); 


      if(focus_image<count_image){ 

       if(focus_image>=count_image){ 

        focus_image=0; 
        pagerPosition=0; 

       }else { 


        pager.setCurrentItem(focus_image); 

        disable_progress=true; 

        System.out.println("focus_image up if ++: 

"+focus_image); 



         text_num.setText("No. "+PostList.get(focus_image).getNum()); 
         text_name.setText(PostList.get(focus_image).getNom()); 

         text_team.setText(PostList.get(focus_image).getTeam()); 
         text_date.setText(PostList.get(focus_image).getNaissance()); 

        if 
(PostList.get(position).getNBVictoire().equals("1")) 

         text_victoires.setText("Victoire: "+PostList.get(focus_image).getNBVictoire()); 

        else 
         text_victoires.setText("Victoires: "+ PostList.get(focus_image).getNBVictoire()); 


        if (PostList.get(focus_image).getNBCourse().equals("1")) 

         text_nomb.setText("Nombre de course: "+PostList.get(focus_image).getNBCourse()); 

        else 

         text_nomb.setText("Nombre de courses: "+PostList.get(focus_image).getNBCourse()); 

       } 

      }else { 

       pagerPosition=count_image; 

       focus_image=count_image; 
     } 


      break; 




     case R.id.boutton_slide_gauche: 

      focus_image = pager.getCurrentItem(); 

      focus_image--; 

      //move to previous record 

      position--; 


      if (focus_image>0){ 



       if (focus_image<=count_image) { 

        System.out.println("focus_image_down: if "+focus_image); 


        pager.setCurrentItem(focus_image); 

        disable_progress=true; 

        text_num.setText("No. "+PostList.get(focus_image).getNum()); 
        text_name.setText(PostList.get(focus_image).getNom()); 

        text_team.setText(PostList.get(focus_image).getTeam()); 

        text_date.setText(PostList.get(focus_image).getNaissance()); 


        if (PostList.get(focus_image).getNBVictoire().equals("1")) 

          text_victoires.setText("Victoire: "+PostList.get(focus_image).getNBVictoire()); 

        else 

         text_victoires.setText("Victoires: "+ PostList.get(focus_image).getNBVictoire()); 


        if (PostList.get(position).getNBCourse().equals("1")) 

         text_nomb.setText("Nombre de course: "+PostList.get(focus_image).getNBCourse()); 
        else 
         text_nomb.setText("Nombre de courses: "+PostList.get(focus_image).getNBCourse()); 


       }else { 


        pager.setCurrentItem(focus_image); 

        disable_progress=true; 

        text_num.setText("No. "+PostList.get(focus_image).getNum()); 


text_name.setText(PostList.get(focus_image).getNom()); 


text_team.setText(PostList.get(focus_image).getTeam()); 


text_date.setText(PostList.get(focus_image).getNaissance()); 


        if 

(PostList.get(focus_image).getNBVictoire().equals("1")) 

         text_victoires.setText("Victoire: "+PostList.get(focus_image).getNBVictoire()); 

        else 


         text_victoires.setText("Victoires: "+ PostList.get(focus_image).getNBVictoire()); 


        if 

(PostList.get(position).getNBCourse().equals("1")) 


         text_nomb.setText("Nombre de course: "+PostList.get(focus_image).getNBCourse()); 


        else 


         text_nomb.setText("Nombre de courses: "+PostList.get(focus_image).getNBCourse()); 



       } 


      }else { 

       focus_image=0; 
       pagerPosition=0; 

      } 


      break; 
} 

和誤差是

java.lang.IndexOutOfBoundsException:無效索引3,大小爲3

+0

1.把ImagePagerAdapter放在這裏。 2.你正在填寫web服務的數據?如果是,那麼檢查解析代碼。 3.您在ImagePagerAdapter中使用多個數組,那麼您必須檢查所有數組的大小是否相同。這一切都有可能得到這個錯誤。 – 2013-02-27 07:34:06

回答

2

java.lang.IndexOutOfBoundsException: Invalid index 3, size is 3是足夠找出錯誤。沒有其他要求。

如果大小爲3,您只能訪問索引2。如果要訪問索引3,請將陣列/陣列列表大小增加到4

+0

是的,但它需要0,1,2只有3不存在。我如何測試它是否在內部之間,如果它> 3或更多,它重置值?一個幫助Luffy:) – Naruto 2013-02-27 07:05:14

+0

首先,發佈完整的堆棧跟蹤並找出它到底拋出異常的地方。接下來,你提到的邏輯足夠好。無論在什麼地方發出異常,就在代碼片之前,檢查var是否小於3,如果不是,則將其重置爲0。 – SudoRahul 2013-02-27 07:09:43

+0

此外,嘗試調試您的代碼(通過放置斷點)並放置一些記錄器。 – SudoRahul 2013-02-27 07:10:24

相關問題