intent 파라미터가 null?

2015. 2. 9. 09:30Programming/Android

아래와 같이 intent를 생성하여 다른 activity에 data를 보내는데, 받는 쪽 activity에서 data가 null이라는 error를 리턴했다.


보내는 쪽 코드

Intent i = new Intent(Test1Activity.this, Test2Activity.class);

i.putExtra("Title", edit_title.getText());

startActivity(i);



받는쪽 코드

Intent i = getIntent();

String title = intent.getStringExtra("Title");           <---- Null Error 발생!!!


받을 때 String에 대한 null 예외 처리를 추가해야겠다는 생각이 들었다.

'그런데 .getText() 함수를 썼는데 왜 null이 리턴되지?' 라는 생각을 품고 다른 개발자들은 null 처리를 어떻게 하는지

찾아보던 중..

getText() 함수의 리턴 값이 Charsequence 인터페이스를 구현한 Editable 객체라는 사실을 발견하였다.


Editable 객체는 텍스트나 이미지, 링크등을 입력할 수 있으며, 입력된 데이터가 일정한 규칙에 의한 String 값으로 저장되고 있다.

그래서 만약 인자로 Charsequence를 받는다면 상관이 없지만 String을 인자로 받을 경우에는 해당 객체를 바로 쓸 수 없다.

(그래서 null 값이 리턴된 것 같음)


만약 getText()의 결과를 String 형태의 인자로 받고자 한다면 getText().toString()으로 String 변환을 시켜줘야 한다.

해당 보내는 쪽 코드에서 edit_title.getText().toString()으로 변경하니깐 null error 없이 빈 문자열로 결과가 나왔다.


머 어찌되었건 데이터 송수신에 있어서 null 처리는 꼭 해줘야 할 것 같다.