2013-07-12 3 views
1

Я использую 1 Активность для нескольких задач зависит от намерения, которое я передаю из MainActivity. Поэтому, если я передаю «да», он отобразит и скроет некоторые элементы View, в противном случае он покажет нормальную активность, но несколько раз сбой приложения из-за NullPointerExepction и приведет меня к тому месту, где я называю намерение String, как будто ни одна строка не прошла. Так что я wondring, если это потому, что я использую строку вместо логического или так. Какой был бы лучший способ для моего дела?
здесь то, что я использую сейчас:Я получаю исключение NullPointerException при вызове .equals() в null String

public String getUserStatus(){ 
    Intent intent = getIntent(); 
    isUserLogedin = intent.getExtras().getString("userstatus"); 
    return isUserLogedin ; 
} 

и я использую это:
if(getUserStatus().equals("yes"))

+0

Можете вставить код, пожалуйста? И лодка? – Andres

+0

@Andres обновленный – Alamri

+0

Похоже, что результат 'getExtras()', вероятно, null. Согласно [документации] (http://developer.android.com/reference/android/content/Intent.html#getExtras()), ['getExtras()'] (http://developer.android.com/ reference/android/content/Intent.html # getExtras()) возвращает значение null, если никаких дополнительных значений не задано. – jahroy

ответ

1

Код и logcat были бы очень полезны в этой ситуации. Тем не менее, я могу сказать, что если это Activity не всегда принимает значение в Intent тогда, если вы делаете что-то вроде

if ("yes".equals(variableName)) 

он будет защищать от null значений

, потому что вы не получите NPE на String «да». Вы можете попробовать это. если он не работает, пожалуйста, разместите соответствующий код и logcat.

+0

Да, это тот же метод, который я использую, я обновил свой вопрос. это из google play «публиковать приложение», о котором пользователи сообщили. – Alamri

+0

Вы можете сделать то же самое для Booleans следующим образом: 'Boolean.TRUE.equals (someBool);' – jahroy

+0

@Alamri - В соответствии с кодом, опубликованным в вашем вопросе, вы ** не ** используете тот же подход. Обратите внимание, что этот ответ предлагает «X» .equals (y) 'вместо' y.equals ("X") '. Есть большая разница. Однажды может выбросить NPE, а другой - нет. – jahroy

2

Вы можете также использовать Boolean, которое позволит на сером цвете:

истина, ложь, не задано.

+0

Хорошо, я использую String как «да» или «нет». но это выглядит глупо. Вот почему я задаю этот вопрос :) – Alamri

Смежные вопросы