2014-02-20 109 views
0

所以我在這裏掙扎一點,以獲得從一個活動傳遞到另一個活動的值。我已經嘗試了一切,並在這裏看過其他地方,但是我發現的一切都沒有工作,或者與我的問題無關。麻煩通過意圖傳遞價值到新的活動

我正在實例化意圖並使用Extras來傳遞值。我正在使用Eclipse,並沒有在IDE中給出任何錯誤。 根據LogCAT,這是一個NullExceptionPointer錯誤得到拋出,因爲我使用意圖的getIntExtra()方法。

下面是主要活動代碼:

int tempScore = GUESS_COUNT; 
Intent intent = new Intent(getApplicationContext(), SubmitScore.class); 
intent.putExtra("PASSED_SCORE", tempScore); 
startActivity(intent); 

下面是來自新的活動代碼:

private Intent i = getIntent(); //declared in the class header 
tempScore = i.getIntExtra("PASSED_SCORE", 999); //exists inside of a private method for the class 
//(ALSO: THIS tempScore is a private int variable localized to only this class, so that's not the problem) 

它試圖存儲getIntExtra的那一刻()返回值tempScore,它拋出NullPointerException錯誤。含義:它試圖在沒有價值的情況下拉取價值。 它不應該至少將999作爲默認值嗎?爲什麼錯誤呢?另外,爲什麼價值沒有被推到新的活動?在此先感謝您的幫助。 JRad

回答

3

private Intent i = getIntent(); //在類標題中聲明

僅供參考,當時沒有可用的意圖,因此您不能使用getIntent()。相反,在onCreate()內聲明它。

+0

這還挺其實答案。雖然不是100%,但它使我走向了正確的方向。你是對的,onCreate()必須發生才能真正拉動Intent。 (哪一個Eclipse不夠有趣)。不幸的是,你不能將它放在像onCreate這樣的方法中,因爲它不會識別它將在封裝getIntExtra()的方法之前執行。我的解決方案是將getIntent()放在同一個方法中,因爲它是我當前使用推送值的唯一地方。謝謝! –

0

你必須先確認你逝去的意圖不爲空,如:

if(i.getExtras()!=null) 
{ 
    tempScore = i.getExtras().getString("PASSED_SCORE"); 
} 
+0

檢查無關緊要。當我先前傳遞一個值時,它是空的。我不在乎這個錯誤,我關心它是空的。 –

+0

好吧,然後pareshMayani的答案很好地解釋了總之。爲他+1。 –

相關問題