2015-11-08 226 views
0

將字符串轉換爲整數存在問題。將字符串轉換爲整數Android

public SharedPreferences abc; 
    abc = getApplicationContext().getSharedPreferences("Trening",0); 



    Integer i = Integer.parseInt(abc.getString("T1",null).toString()); 

的錯誤是:

Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.String android.content.SharedPreferences.getString(java.lang.String, java.lang.String)' on a null object reference 

我學習3天編程,並且希望你可以幫我解釋一下如何解決它,這樣我就可以學習。

對不起,我的英語。 :)

+0

您不能將null轉換爲整數。你在共享首選項中存儲什麼? – zkminusck

+0

@zkminusck我能做些什麼來解決它? – GreenFace

+0

的[什麼是空指針異常,以及如何解決?(http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-and-how-do可能的複製-i-fix-it) – Trilarion

回答

1

當你在使用abc.getString("T1", null)作爲null第二個參數,actualy你說: 如果「T1」未設置值,返回null爲默認值。
所以你有parsInt(null),它會導致NullPointerExceprion。
您可以
abc.getString("T1", "0")
更換
abc.getString("T1", null)它將返回 「0」 爲 「T 1」 的默認值(如果 「T1」 爲空)。所以你有parsInt("0"),它是正常工作。

+0

嗨,謝謝你的回答。我明白你寫了什麼,它對我有幫助,但同樣的錯誤發生 – GreenFace

+0

你是否在一個活動或非活動類? – Seyyed

+0

在活動類 – GreenFace

1

如果abc.getString("T1", null)回報null(如果沒有密鑰值對與你的SharedPreferences關鍵「T1」會出現這種情況),那麼你嘗試獲得的null字符串。這會導致NullPointerException。您應該定義另一個可以轉換爲字符串的defaultValue。

除此之外,你可以離開toString(),因爲getString()返回一個字符串:

Integer i = Integer.parseInt(abc.getString("T1", "-1")); 
1

所以問題基本上是變量ABC是空的,因此getSharedPreferences調用失敗檢索有效的參考。

+0

我該如何解決它? – GreenFace