2013-07-12 2 views
1

다중 작업에 대해 1 Activity를 사용하고 있습니다. MainActivity에서 전달한 의도에 따라 다릅니다. 그래서 "예"를 전달하면보기의 일부 요소가 표시되고 숨겨집니다. 그렇지 않으면 정상적인 활동이 표시되지만 NullPointerExepction으로 인해 응용 프로그램이 중단되는 경우가 있는데 그 곳으로 이동하여 의도 문자열이라고합니다. String이 전달되지 않았던 것처럼. 그래서 만약 내가 부울 또는 대신 문자열을 사용하고있어 궁금하네요. 내 사건에 대한 더 나은 방법은 무엇일까요?null 문자열에서 .equals()를 호출하면 NullPointerException이 발생합니다.

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

와 내가 이것을 사용 : 여기
내가 지금 사용하고 무엇을
if(getUserStatus().equals("yes"))

+0

몇 가지 코드를 입력 해주세요. 그리고 logcat? – Andres

+0

@Andres updated – Alamri

+0

'getExtras()'의 결과가 아마도 null 일 것입니다. [documentation] (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에 값을 수락하지 않는 경우가 NPE을받지 않습니다 때문에 당신이 null

에 대해 보호 할 수

if ("yes".equals(variableName)) 

그런 짓을하면 말할 수 있습니다 String에 "예"라고 표시됩니다. 너는 그것을 시도 할 수있다. 작동하지 않으면 관련 코드를 게시하고 로그인하십시오.

+0

예, 제가 사용하는 것과 같은 방법입니다, 나는 내 질문을 업데이 트했습니다. 그것은 구글에서'공개 애플 리케이션'많은 사용자가 그것을 보도했다. – Alamri

+0

다음과 같이 부울에 대해서도 동일하게 처리 할 수 ​​있습니다 :'Boolean.TRUE.equals (someBool);' – jahroy

+0

@Alamri - 질문에 게시 한 코드에 따르면 ** 같은 접근 방식을 사용하지 않습니다 **. 이 대답은 y.equals ("X") 대신''X ".equals (y)'를 제안합니다. 큰 차이가 있습니다. 일단 NPE를 던지면 다른 쪽은 그렇지 않습니다. – jahroy

2

또한 삼상 허용됩니다 부울을 사용할 수

거짓, 진실, 설정되지 않았습니다.

+0

좋은 지적, 나는 "예"또는 "아니오"로 문자열을 사용하고 있습니다. 하지만 그건 바보 같은 목소리로 보입니다 ... 왜 내가이 질문을하고 있어요 :) – Alamri

관련 문제