2017-05-13 3 views
0

Ich versuche eine Methode zu schreiben, die die Wartungsprotokolle für jedes Fahrrad in meiner App speichert. Die Methode durchläuft jedes Fahrrad, das intern jedes Wartungsprotokoll durchläuft und speichert.Versuch, die Schnittstellenmethode sharedPreferences.edit() 'für eine Nullobjekt-Referenz aufzurufen

Ich kann sehen, die richtigen Informationen gibt es wegen der Log.i an jedem Punkt platziert.

Der vollständige Code für meine Methode -

public static void saveLogs() { 

     for (Bike thisBike : bikes) { 

      Log.i("Saving Logs", "" + thisBike); 
      try { 
       ArrayList<String> dates = new ArrayList<>(); 
       ArrayList<String> logs = new ArrayList<>(); 
       ArrayList<String> costs = new ArrayList<>(); 

       for (maintenanceLogDetails thisLog : thisBike.maintenanceLogs) { 

        Log.i("Date :", thisLog.date); 
        dates.add(thisLog.date); 
        Log.i("Log :", thisLog.log); 
        logs.add(thisLog.log); 
        Log.i("Cost :", Double.toString(thisLog.price)); 
        costs.add(Double.toString(thisLog.price)); 

       } 

       sharedPreferences.edit().putString("dates", ObjectSerializer.serialize(dates)).apply(); 
       sharedPreferences.edit().putString("logs", ObjectSerializer.serialize(logs)).apply(); 
       sharedPreferences.edit().putString("costs", ObjectSerializer.serialize(costs)).apply(); 

      } catch (Exception e) { 
       e.printStackTrace(); 
       Log.i("Adding details", "Failed attempt"); 
      } 
     } 
    } 

An der Spitze der Klasse I haben -

static SharedPreferences sharedPreferences; 

Der vollständige Fehler, den ich bekommen habe ist -

Attempt to invoke interface method 'android.content.SharedPreferences$Editor android.content.SharedPreferences.edit()' on a null object reference 

Bei die Linie, die ist -

sharedPreferences.edit().putString("dates", ObjectSerializer.serialize(dates)).apply(); 

Was mich verwirrt, habe ich den Code von woanders kopiert, der funktioniert.

Was mache ich falsch?

Vielen Dank!

Antwort

1
static SharedPreferences sharedPreferences; 

Haben Sie es sogar instanziiert .. ??

getContext().getSharedPreferences(String, int) 

https://developer.android.com/reference/android/content/SharedPreferences.html

https://developer.android.com/reference/android/content/Context.html#getSharedPreferences(java.lang.String,%20int)

+0

Offenbar habe ich nicht! Verpasste das, danke! – AndyCr15

+0

Kann mir vielleicht jemand helfen, auch zu verstehen, warum die Leute das abstimmen würden? Obwohl ich einen dummen Fehler gemacht habe, ist die Frage an sich wohl richtig gestellt. Es scheint hier ein ziemlich giftiger Ort zu sein ... :-( – AndyCr15

+0

Yeah Anfänger wie ich sollten nicht gewählt werden. @ AndyCr15 – Kaushal28

Verwandte Themen