2012-02-06 76 views
2

我從目錄中的文件構建手勢並嘗試將它們保存在手勢庫中。 我不能這樣做正確,請幫助嘗試將手勢保存到手勢庫時的問題

class B implements Runnable 
     { 
      File main; 
      B(File temp) 
      { 
       main=temp; 
      } 
      public void savegesture() 
       { 
        final GestureLibrary store=sStore; 
        for(int i=0;i<list.size();i++) 
        { 
         try{ 
         String name="0"+i; 
         store.addGesture(name, list.get(i)); 
         store.save(); 
         }catch(Exception e) 
         { 
          System.out.println("error"); 
         } 
        } 
       } 

      public void run() 
      { 

       File[] newfiles=main.listFiles(); 
       File[] temp=null; 
       int progress=0; 
       float dircnt=0; 

       int numberoffiles=newfiles.length; 
       for(File b:newfiles) 
       { 
        try{ 
         Gesture gest; 

          gest=dotask.batchprocess(b); 
         if(gest!=null) 
         { 
          System.out.println("success"); 
          list.add(gest); 
         } 

        }catch(Exception e) 
        { 
         System.out.println("error saving file"); 
        } 



         savegesture(); 



       } 
      } 
     } 
     public void addgestures() 
     { 
      cView.postInvalidate(); 
      dotask.setH(cView.getH()); 
      dotask.setW(cView.getW()); 

      count=0; 
      B b=new B(dir); 

      Thread t=new Thread(b); 
      t.start(); 

} 誰能說得清是從我的logcat我無法理解的錯誤。

02-06 20:25:18.269: E/AndroidRuntime(31886): FATAL EXCEPTION: Thread-11 
02-06 20:25:18.269: E/AndroidRuntime(31886): java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0 
02-06 20:25:18.269: E/AndroidRuntime(31886): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257) 
02-06 20:25:18.269: E/AndroidRuntime(31886): at java.util.ArrayList.get(ArrayList.java:311) 
02-06 20:25:18.269: E/AndroidRuntime(31886): at android.gesture.Instance.temporalSampler(Instance.java:91) 
02-06 20:25:18.269: E/AndroidRuntime(31886): at android.gesture.Instance.createInstance(Instance.java:76) 
02-06 20:25:18.269: E/AndroidRuntime(31886): at android.gesture.GestureStore.addGesture(GestureStore.java:158) 
02-06 20:25:18.269: E/AndroidRuntime(31886): at android.gesture.GestureLibrary.addGesture(GestureLibrary.java:68) 
02-06 20:25:18.269: E/AndroidRuntime(31886): at com.android.pack.TestActivity$B.savegesture(TestActivity.java:83) 
02-06 20:25:18.269: E/AndroidRuntime(31886): at com.android.pack.TestActivity$B.run(TestActivity.java:117) 
02-06 20:25:18.269: E/AndroidRuntime(31886): at java.lang.Thread.run(Thread.java:1019) 

}

回答

1

我覺得你的問題是在這裏:

gest=dotask.batchprocess(b); 

所以這段代碼:

if(gest!=null) 
        { 
         System.out.println("success"); 
         list.add(gest); 
        } 

,不會被調用列表的大小始終爲0

+0

Bump,「java.lang.IndexOutOfBoundsException:索引無效0,大小爲0「 – 2012-02-07 02:57:52