2015. 2. 9. 09:30ㆍProgramming/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 처리는 꼭 해줘야 할 것 같다.