2011-11-12 3 views
1

새로운 의도로 일부 엑스트라를 보냈습니다. 거기서 그것은 번들을 잡아서 null인지 테스트합니다. 매번 값을 얻고 사용할 수는 있지만 null입니다.Intent Bundle은 매번 Null을 반환합니까?

if 서술문에 어떤 문제가 있는지 누가 알 수 있습니까?

Intent i = getIntent(); 
Bundle b = i.getExtras(); 
int picked = b.getInt("PICK"); 
int correct = b.getInt("CORR"); 
type = b.getString("RAND"); 
if(b == null || !b.containsKey("WELL")) { 
    Log.v("BUNDLE", "bun is null"); 
} else { 
    Log.v("BUNDLE", "Got bun well"); 
} 

EDIT : 번들이 생성되는 곳.

Intent intent = new Intent(this, app.pack.son.class); 
Bundle b = new Bundle(); 
b.putInt("PICK", pick); 
b.putInt("CORR", corr); 
b.putString("RAND", "yes"); 
intent.putExtras(b); 
startActivity(intent); 
+0

번들을 생성 (전송)하는 코드를 입력하십시오. –

답변

5

번들이 null 인 것으로 생각되지 않습니다. NullPointerException을 훨씬 빨리 얻을 수 있기 때문에 그럴 수 없습니다.

오류 메시지가 잘못 표시되는 것이 문제입니다. 이 변경이로

if(b == null || !b.containsKey("WELL")) { 
    Log.v("BUNDLE", "bun is null"); 
} else { 
    // ... 
} 

을 : 당신이 그것을 추가하지 않았기 때문에

if (!b.containsKey("WELL")) { 
    Log.v("BUNDLE", "bundle does not contain key WELL"); 
} else { 
    // ... 
} 

그리고 번들이 키를 포함하지 않는 이유가있다.

+0

나는 당신을 돕고 싶지만 더 많은 정보가 필요하다 : 1) 엑스트라를 올리고이 활동을 일으키는 코드를 볼 필요가있다. 2) 내가 이해한다면 - b는 null이지만 당신은 그것으로부터 가치를 얻을 수있다. ??? 그것은있을 수 없습니다. 당신이 절대적으로 null인지 확신합니까? (디버그 모드에서 중단 점을 넣었습니까? null이 있습니까?) –

0

글쎄, 사용 후에는 b == null으로 테스트해야합니다. 틀렸어 야합니다. 또한 초기 if이 누락 되었습니까? 편집 후


당신은 번들 내부에 "잘"넣어하지 않으므로 문자열 기록됩니다 "롤빵은 null입니다." b은 null이 아니어야하며 그렇지 않으면 충돌이 발생합니다. 이에 if 문장을 변경 시도하고 당신이 무엇을 얻을보고 : 내가 로그 메시지를 일치하도록 if 문을 변경

if (b == null) { 
    Log.v("BUNDLE", "bun is null"); 
} else if (!b.containsKey("WELL")) { 
    Log.v("BUNDLE", "bun doesn't contain WELL"); 
else { 
    Log.v("BUNDLE", "Got bun well"); 
} 
0

. 프로그램을 실행하고 로그 메시지를 확인하십시오.

if(b == null) { 
    Log.v("BUNDLE", "bun is null"); 
} else { 
    if (b.containsKey("WELL")) { 
     Log.v("BUNDLE", "Got bun well"); 
    } 
} 
관련 문제