2016-08-16 6 views
-1

私はHashMapを持っていると私はそれのHashMapにオブジェクトを追加するメソッドを作成して値などのオブジェクトを配置するが、私はNullPointerExceptionがここは、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; 
} 

を取得していますスタックトレースです:

原因:java.lang.NullPointerException:nullオブジェクト参照で仮想メソッド 'java.lang.Object java.util.HashMap.put(java.lang.Object、java.lang.Object)'を呼び出そうとしました at com.brbecker.tabletopcompanion.activities.PlayerStatsActivity.createPlayerStatsHashMap(PlayerStats android.app.Instrumentationでandroid.app.Activity.performCreate(Activity.java:6876) でcom.brbecker.tabletopcompanion.activities.PlayerStatsActivity.onCreate(PlayerStatsActivity.java:33) でActivity.java:55) 。 android.app.ActivityThread.access $ 1100 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3350) でandroid.app.ActivityThread.performLaunchActivity(ActivityThread.java:3207) でcallActivityOnCreate(Instrumentation.java:1135) (ActivityThread.java:222) android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1795) android.os.Handでler.dispatchMessage android.app.ActivityThread.main(ActivityThread.java:7229)でandroid.os.Looper.loopで(Handler.java:102) (Looper.java:158)

ありがとう!

+0

NPEはどこからデバッグするのですか? – Javant

+1

生のタイプは使用しないでください。これは 'HashMap'の正しいコンストラクタではありません。これは 'Object'の正しいコンストラクタではありません。これらのメソッドもありません。明らかなコンパイラエラーがあなたの実際のコードで修正されていると仮定すると、 'list.get(i)'が 'null'を返すように見えます。 –

+1

MyObjectオブジェクト=新しいMyObject(...)ではないオブジェクト – whyn0t

答えて

0

欠けているもの:

listPlayerStats = new HashmMap<>(); 

は、したがって、変数がnullエラーの原因となっています。

コードで優柔不断があります:

  • 方法でローカル変数を使用し、それを返し、フィールドに結果を割り当てるフィールドlistPlayerStatsを変更し、メソッドボイドを作る、または
  • のいずれかがlistPlayerStats
+0

それはそれでした。ありがとう! – brbecker87