2012-03-29 2 views
0

나는 안드로이드에서 load를 사용하여 널 포인터를 얻는다.null 포인터 로딩 데이터 android java

java.lang.IndexOutOfBoundsException : 잘못된 인덱스 0, 크기는 0

사람이 왜 나를 도와 줄 수있다. '집'이 올바르게 읽히도록 4 개의 집이 있습니다. 대신 당신은 목록 집을 만들
houses.add(count, (House) ois.readObject());
사용
houses.add(i, (House) ois.readObject());

+0

교체 ** houses.add (계산, (집) ois.readObject()); **와 ** houses.add ((하우스) ois.readObject()); ** 무슨 일이 일어나는지 확인하십시오 ... – ngesh

+0

동일한 오류가 발생합니다 : java.lang.IndexOutOfBoundsException : 잘못된 인덱스 0, 크기가 0 – user1212520

+0

당신은 전체 코드를 게시하지 않았습니다 ... – ngesh

답변

1

, 당신은 위치 계산에 뭔가를 저장하려고 그 이후의 크기 이즈 0은 - 문제를 이잖아.

 .... 
     int count = ois.readInt(); 
     for (int i = 0; i < count; i++) { 
      houses.add((House) ois.readObject()); 
     } 
     .... 
+0

오 .. 그래 .. [링크] (http://stackoverflow.com/a/9925522/1298357)이 CSH에서 최선의 해결책입니다 –

+0

이것은 완전히 FileNotFoundException 이후로 바로되지 않습니다 * * forLoop에서 ** 다른 indexOutOfBoundException **이 발생할 수 있습니다. .. – ngesh

2

 public void save() { 
    try { 
     OutputStream fos = openFileOutput("file.txt", Context.MODE_PRIVATE); 
     ObjectOutputStream oos = new ObjectOutputStream(fos); 
     oos.writeInt(data.getItems().size()); 
     for (int i = 0; i< data.getItems().size(); i++) { 
     oos.writeObject(data.getItems().get(i)); 
     } 
     fos.flush(); 
     fos.close(); 
    } 
    catch (IOException e) { 
     e.printStackTrace(); 
    } 
    } 


      public ArrayList<House> load() { 
     Log.i("Read File", " Loading file "); 
     FileInputStream fis; 
     ArrayList<House> houses = new ArrayList<House>(); 
     try { 
      fis = openFileInput("file.txt"); 
      ObjectInputStream ois = new ObjectInputStream(fis); 
      int count = ois.readInt(); 
      for (int i = 0; i<count; i++) { 
       try { 
        houses.add(i, (House) ois.readObject()); 
        // or houses.add((House) ois.readObject()); - same error 
       } catch (ClassNotFoundException e) { 
        e.printStackTrace(); 
       } 
      } 
      ois.close(); 
      return houses; 
     } 
     catch (FileNotFoundException e) { 
      Log.i("Read", ""+e); 
     } 
     catch (IOException e) { 
      Log.i("Read", ""+e); 
     } 

     return null; 

    } 
2

을 시도 문제는이 라인 :

houses.add(count, (House) ois.readObject()); 

houses

는 처음에 크기가 0이며, 당신은 인덱스 4에 삽입하려고 (계산). 아마해야합니다 :

houses.add((House) ois.readObject()); 
+0

oh yea, xD. 죄송합니다. 위의 코드를 변경했지만 그 비트를 제거하더라도 ois.readObject()를 호출하는 동안 오류가 발생합니다. – user1212520

+0

다른 오류입니다. 스택 추적을 게시하십시오. – MByD

+0

같은 에러 : java.lang.IndexOutOfBoundsException : 인덱스 0이 잘못되었습니다. 사이즈는 0입니다. – user1212520

관련 문제