2015-11-08 163 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