2012-07-02 66 views
0

我試圖通過幾個Android活動傳遞2個變量。其中一人一直出現在最後一頁上爲空:當通過Android傳遞變量時NumberFormatException意圖

的第一個活動:

Intent intent= new Intent(RoundOptionActivity.this, MoveOptionActivity.class); 
intent.putExtra("numRounds", "5"); 
startActivity(intent); 

第二個活動:

Bundle extras = getIntent().getExtras(); 
if(extras !=null) { 
    numRounds = Integer.parseInt(extras.getString("numRounds")); 
} 

......... 

Intent intent = new Intent(MoveOptionActivity.this, MoveActivity.class); 
intent.putExtra("numRounds", numRounds); 
intent.putExtra("playerChoice", playerChoice); 
startActivity(intent); 

(請注意,在這一點上我打印numRounds在logcat中它被設置爲正確的數字,而不是空)

第三活動:

Bundle extras = getIntent().getExtras(); 
if(extras !=null) { 
    playerChoice = Integer.parseInt(extras.getString("playerChoice")); 
    numRounds = Integer.parseInt(extras.getString("numRounds")); 
} 

此時,應用程序崩潰在我嘗試將numRounds解析爲整數的行上,NumberFormatException抱怨它無法解析空值。 playerChoice從來沒有問題,只有numRounds。我試過用與playerChoice完全相同的方式處理numRounds,但似乎沒有任何效果。這是怎麼回事? d:

回答

3

你必須使用extras.getInt("numRounds");

因爲在第二Activity您添加到putExtraINT值:

numRounds = Integer.parseInt(extras.getString("numRounds")); 
+0

啊!我其實曾嘗試過,並表示沒有任何這種方法。此外,我不知道爲什麼它在第二個活動中將其解析爲int,但不是第3個,非常奇怪。無論如何,這工作,謝謝! =) –

2

使用

這一翻譯的

numRounds = Integer.parseInt(extras.getString("numRounds")); 

numRounds = extras.getInt("numRounds"); 

,因爲你是從第二活動

傳遞numRounds爲整數的intent.putExtra("numRounds", numRounds);或傳遞,如果你想獲得的字符串:

Intent intent = new Intent(MoveOptionActivity.this, MoveActivity.class); 
intent.putExtra("numRounds", numRounds+""); 
intent.putExtra("playerChoice", playerChoice); 
startActivity(intent); 
+0

他用'putExtra(String,String)'開頭,雖然... –

+0

@AlexLockwood:看到這個numRounds = Integer.parseInt(extras.getString(「numRounds」)); –

+0

是的,但他使用了'intent.putExtra(「numRounds」,「5」);'將String存儲在第一位。 –

1

據我認爲,在你的第二個活動中,你在putExtra()中設置了一個整數值numRounds,即整數變量numRounds,這就是爲什麼它會導致問題。無論是獲得第三個活動的numRounds直接像extras.getInt("numRounds")或次活動發送的值作爲字符串即intent.putExtra("numRounds", numRounds+"");