2017-01-15 24 views
1

アクティビティ間でハッシュマップを送信しようとしていますが、常にnullです。Android hashmapがnullを返す

コード受信
public HashMap <Integer, Integer> pickedPick = new HashMap <>(); 
Intent intent = new Intent(this, CharPick.class); 
intent.putExtra("hashMap", pickedPick); 
startActivity(intent); 

::私はそれを使用して、それを返送しようとする前に、NPEを取得

Intent intent = getIntent(); 
pickedPick = (HashMap <Integer, Integer>) intent.getSerializableExtra("hashMap"); 

if (pickedPick != null && pickedPick.keySet().contains(clicked)){ 
    pickedPick.remove(clicked); 
    pickedPick.put(clicked, picked); 
} else if (pickedPick != null) { 
    pickedPick.put(clicked, picked); 
} 
intent.putExtra("hashMap", pickedPick); 
startActivity(intent); 

唯一の場所だコードを送信

ハッシュマップは常にnullと見なされるため、ハッシュマップにデータを追加しても機能しません。何が原因でnullになるのか分かりません。

+0

if文を2つのネストされた文に分割すると、NPEを避けることができます: 'if(pickedPick!= null){if(pickedPick.keySet()。(clicked){...} else {... }} ' – Karakuri

+0

@ Karakuri実際にはNPEを修正していますが、問題はハッシュマップにデータを追加しないことです。それだけでデータが追加されます – Sha

+0

ここで' (onCreate、onResume、onNewIntent) - インテントに実際にデータが含まれているかどうかを確認します。 – damian

答えて

0

あなたのelse文は、pickedPickオブジェクトがnullの場合にのみ実行されます。あなたはNPEを手に入れています。

+0

私はpickedPick!= nullもelseに入れてみましたが、とにかくnullなので、何もしません:/ – Sha

関連する問題