2012-03-29 8 views
0

Ich bekomme einen Nullzeiger mit Last in Android.nullzeiger laden daten android java

java.lang.IndexOutOfBoundsException: Ungültige Index 0, Größe 0

mir jemand, warum helfen. Es gibt 4 Häuser, also wird 'zählen' richtig gelesen.

 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; 

    } 
+0

ersetzen ** houses.add (zählen, (Haus) ois.readObject()); ** mit ** houses.add ((Haus) ois.readObject()); ** und überprüfen, was passiert ... – ngesh

+0

Ich bekomme den gleichen Fehler: java.lang.IndexOutOfBoundsException: Ungültiger Index 0, Größe ist 0 – user1212520

+0

Sie haben nicht den vollen Code dann ... – ngesh

Antwort

1

statt
houses.add(count, (House) ois.readObject());
Verwendung
houses.add(i, (House) ois.readObject());

+0

Ou ... ja .. [link] (http://Stackoverflow.com/a/9925522/1298357) ist die beste Lösung in diesem cse –

+0

Dies ist nicht völlig richtig seit a ** FileNotFoundException * * in forLoop kann eine andere ** indexOutOfBoundException ** verursachen .. – ngesh

2

Sie Liste Häuser erstellen, deren Größe iz 0 nach, dass Sie versuchen, etwas an Position Zahl zu speichern - das ist das Problem. Versuchen

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

Das Problem ist diese Linie:

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

houses der Größe 0 am Anfang, und Sie versuchen, Index 4 (count) einzufügen. sollte wohl sein:

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

oh yea, xD. Es tut uns leid. Ich habe den Code oben geändert, aber selbst wenn ich dieses Bit entferne, erhalte ich immer noch den Fehler, indem ich einfach ois.readObject()); – user1212520

+0

Dies ist ein anderer Fehler, bitte senden Sie den Stack-Trace. – MByD

+0

Gleicher Fehler: java.lang.IndexOutOfBoundsException: Ungültiger Index 0, Größe ist 0 – user1212520

Verwandte Themen