2016-04-28 8 views
0

Das ist mein Code des Sparens json ist:Lesen json von android internen Speicher Fehler

public void saveCrimes (ArrayList<Crime> crimes) throws JSONException, FileNotFoundException, IOException { 
      JSONArray jsonArray = new JSONArray(); 
      for (Crime c:crimes) 
      { 
       jsonArray.put(c.convertToJson()); 
      } 
      Writer writer = null; 
      OutputStream out = context.openFileOutput(fileName, Context.MODE_PRIVATE); 
      writer = new OutputStreamWriter(out); 
      writer.write(jsonArray.toString()); 
      writer.close(); 
      out.close(); 
     } 
And this is my code of reading json : 

public ArrayList<Crime> loadCrimes() throws IOException, JSONException { 
     ArrayList<Crime> crimes = new ArrayList<Crime>(); 
     BufferedReader reader = null; 
     StringBuilder builder = new StringBuilder(); 
     String line = null; 
     try { 
      InputStream in = context.openFileInput(fileName); 
      reader = new BufferedReader(new InputStreamReader(in)); 
      while((line = reader.readLine()) != null) 
       builder.append(line); 
      JSONArray array = (JSONArray)new JSONTokener(builder.toString()).nextValue(); 
      for(int i = 0; i < array.length(); i++) 
      { 
       crimes.add(new Crime(array.getJSONObject(i))); 
      } 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } 
     finally { 
      if (reader != null) 
       reader.close(); 
     } 
     return crimes; 
    } 

Die Frage ist: Code json des Sparens richtig ist, aber wenn ich auf meinem Handy meine Anwendung ausführen, neue Verbrechen, und starten Sie die App neu, JSON gespeichert vor kann nicht gelesen werden. Was mich verwirrter macht ist, dass es gut funktioniert, wenn ich es auf einem Emulator starte. Warum?

+0

und welchen Fehler bekommen Sie? keine Datei? oder vielleicht ein Fehler beim Schreiben? hast du debuggen? –

+0

'create new crime, und starten Sie die App neu, JSON gespeichert vor kann nicht gelesen werden.'. Meinst du, dass du nur das letzte gespeicherte Verbrechen lesen kannst und nicht die alten? – greenapps

+0

Sie sollten zuerst prüfen, ob 'builder.toString()' den richtigen Text liefert. Log es oder Toast es. – greenapps

Antwort

0

Ich weiß was falsch ist. Android Studio 2.0 kann die Änderungen, die Sie in Ihren Codes vorgenommen haben, nicht speichern, wenn die Änderung sehr klein ist. Die Lösung ist das Erstellen von Apk vor dem Ausführen Ihrer Anwendung.

Verwandte Themen