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!
Woher kommt NPE, wenn Sie debuggen? – Javant
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. –
MyObject object = new MyObject (...) not Objekt – whyn0t