2016-08-16 3 views
-1

Ich habe eine HashMap und ich geschaffen, dass HashMap ein Verfahren, um Objekte hinzufügen, aber ich erhalte eine Nullpointerfor-Schleife Objekte als Wert zu setzen in HashMap

private HashMap<String, Player> createPlayerStatsHashMap(List<String> listPlayerNames, PlayerScoresDatabase db) { 
    for (int i = 0; i < listPlayerNames.size(); i++) { 
     Player player = new Player(i, listPlayerNames.get(i)); 
     player.setWinPercentage(db.getWinPercentage(listPlayerNames.get(i))); 
     player.setBestGame(db.getBestGame(listPlayerNames.get(i))); 
     player.setWorstGame(db.getWorstGame(listPlayerNames.get(i))); 
     player.setRivalPlayer(db.getRivalPlayer(listPlayerNames.get(i))); 
     // Each of these Logs returns the correct value 
     Log.d(StartingPageActivity.DEBUG_TAG, "PlayerStatsActivity createPlayerStatsHashMap player name: " + player.getPlayerName()); 
     Log.d(StartingPageActivity.DEBUG_TAG, "PlayerStatsActivity createPlayerStatsHashMap player winpercent: " + player.getWinPercentage()); 
     Log.d(StartingPageActivity.DEBUG_TAG, "PlayerStatsActivity createPlayerStatsHashMap player bestgame: " + player.getBestGame()); 
     Log.d(StartingPageActivity.DEBUG_TAG, "PlayerStatsActivity createPlayerStatsHashMap player worstgame: " + player.getWorstGame()); 

     // This is where the NullPointerException occurs 
     listPlayerStats.put(listPlayerNames.get(i), player); // this is line 55 

    } 
    return listPlayerStats; 
} 

Hier ist der Stacktrace:

verursacht durch: java.lang.NullPointerException: Versuch, die virtuelle Methode 'java.lang.Object java.util.HashMap.put (java.lang.Object, java.lang.Object)' für eine Nullobjekt-Referenz um aufzurufen com.brbecker.tableopcompanion.activities.PlayerStatsActivity.createPlayerStatsHashMap (PlayerStats Activity.java:55) unter com.brbecker.tableopcompanion.activities.PlayerStatsActivity.onCreate (PlayerStatsActivity.java:33) bei android.app.Activity.performCreate (Activity.java:6876) bei android.app.Instrumentation. callActivityOnCreate (Instrumentation.java:1135) bei android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3207) bei android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3350) bei android.app.ActivityThread.access $ 1100 (ActivityThread.java:222) bei android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1795) bei android.os.Hand ler.dispatchMessage (Handler.java:102) bei android.os.Looper.loop (Looper.java:158) bei android.app.ActivityThread.main (ActivityThread.java:7229)

Dank!

+0

Woher kommt NPE, wenn Sie debuggen? – Javant

+1

Verwenden Sie keine Rohtypen. Das ist kein richtiger Konstruktor für 'HashMap'. Das ist kein korrekter Konstruktor für 'Object', der diese Methoden ebenfalls nicht enthält. Es sieht so aus, dass 'list.get (i)' 'null' zurückgibt, vorausgesetzt, dass die offensichtlichen Compilerfehler in Ihrem tatsächlichen Code korrigiert werden, den Sie anzeigen sollten. –

+1

MyObject object = new MyObject (...) not Objekt – whyn0t

Antwort

0

Was fehlt:

listPlayerStats = new HashmMap<>(); 

Daraus ergibt sich die Variable null den Fehler verursacht.

gibt ein indecision in dem Code ist:

  • entweder das Verfahren unwirksam machen, wird das Feld listPlayerStats oder
  • bei dem Verfahren eine lokale Variable zu verändern, und das Rück dass, weist das Ergebnis Feld listPlayerStats.
+0

Das war es. Vielen Dank! – brbecker87

Verwandte Themen