안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요.
책을 보고 공부하다보니...Toast를 띄우는 부분에서 Context가 필요한데...
getApplicationContext()같은 것을 쓰는 것이 아니라 "클래스명.this"와 같은 식으로 쓰는 코드들이 있던데요.
이건 문법적으로 어떻게 되는건가요?
예)
Toast.makeText(UserActivity.this, "hello", 1000).show();
책을 보고 공부하다보니...Toast를 띄우는 부분에서 Context가 필요한데...
getApplicationContext()같은 것을 쓰는 것이 아니라 "클래스명.this"와 같은 식으로 쓰는 코드들이 있던데요.
이건 문법적으로 어떻게 되는건가요?
예)
Toast.makeText(UserActivity.this, "hello", 1000).show();
2010.03.26 10:42:33
가친절한 대슬에 감사드립니다. 제가 잘 몰라서요^^
this가 자기자신을 가리키는 것은 아는데요. 클래스명.this로 쓰는게 어떻게 다른지가 궁금합니다.
즉 그냥 this와 UseActivity.this가 어떻게 다른가요?
2010.03.26 13:05:59
자바 문법인데요.
this는 현재의 객체를 뜻한다고 보시면 됩니다.
Activity는 계층상 Context를 상속받고 있습니다.
그러니 Activity.this는 Activity 객체를 뜻하는 것이고,
상속 트리상 Context가 업 캐스팅 적용 되는것이지요.
그냥 this를 써도 같은 뜻이 되지만,
어디에서 쓰는지가 문제가 됩니다.
inner 클래스라던지 메소드에서 쓰면 this의 뜻이 달라지는 것이죠.
참조하는 위치가 달라지니까요.
그래서 이러한 곳에서는 Activity.this와 같이 명시적으로 나타내어 주는 것이죠.
자바의 this 사용법에 대해서 알아보시면 될것 같습니다.
^^
getApplicationContext() 를 사용해도 되고 UserActivity.this 를 사용해도 무방한거죠.