2015-11-08 2 views
0

У меня проблема с преобразованием строки в целое.String to Integer 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

При использовании null в качестве второго аргумента в abc.getString("T1", null), actualy вы говорите: если значение «T1» не установлен, возврат null по умолчанию.
У вас есть parsInt(null), и это вызывает NullPointerExceprion.
Вы можете заменить
abc.getString("T1", null) с
abc.getString("T1", "0")
Это будет возвращает строка «0» в качестве значения «Т1» по умолчанию (если «T1» равна нулю). Итак, у вас есть parsInt("0"), что он работает proprely.

+0

Привет, спасибо за ответ. Я понял, что вы написали, и это помогло мне, но те же самые erros произошли. – GreenFace

+0

Вы работаете в классе активности или не-активности? – Seyyed

+0

В классе активности – GreenFace

1

Если abc.getString("T1", null) возвращает null (это произойдет, если нет ключа-Value-Pair с ключом «T1» в ваших SharedPreferences), то вы пытаетесь получить строку null. Это вызывает исключение NullPointerException. Вы должны определить другое значение по умолчанию, которое может быть преобразовано в строку.

Кроме того, вы можете оставить toString(), потому что getString() возвращает строку:

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

Таким образом, проблема в основном в том, что переменные а равны нулем, поэтому getSharedPreferences вызова не может извлечь действительная ссылка.

+0

Как это исправить? – GreenFace