메뉴 건너뛰기

조회 수 6832 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

[ AndroidManifest.xml에 액티비티 등록하는 걸 잊음 ]

[ 캐스팅을 잘못함 (레이아웃 XML 파일엔 TextView라 해놓고 코드에서는 EditText로 받는 등) ]

[ R.java가 사라짐 (잘못된 명명법 사용) ]

[ 사용하는 권한을 명시하지 않음 ]






[ this를 잘못 사용함 ]

이 부분은 자바 문법에 관련된 내용이지만, 설명하는 곳이 워낙 없고 모르시는 분들이 많은 것 같아 작성합니다.




지금까지 배운 내용 중 this를 매개변수로 전달하는 메서드가 몇 개 있었습니다.



 


토스트와 인텐트를 만들 때죠.






이들은 사실 액티비티가 아닌 Context 타입을 받도록 되어 있습니다. 




 

 
이런 식으로 말이죠.








하지만 액티비티는 간접적으로 Context 클래스를 상속하기 때문에 Context 대신 액티비티를 전달할 수 있습니다.


 







그래서 this 키워드를 사용하여 액티비티 자기 자신을 전달하는 것입니다.







 



아무튼 이렇게 액티비티 안에서 this를 사용하면 this = 액티비티가 되어 정상적으로 작동합니다.
 





 



그런데 OnClickListener 안에서 this를 사용하면 오류가 납니다.

왜 그럴까요?
 






 


보시다시피 this는 액티비티 안에도 OnClickListener 안에도 속해있기 때문에 this는 액티비티도, OnClickListener도 될 수 있습니다.

자바에서 this는 가장 안쪽에 있는 클래스를 가리키므로 위 상황에서는 this가 OnClickListener를 가리키게 됩니다. 

메서드의 매개변수 타입이 맞지 않으니까 오류가 발생한 것이지요.
 






 


이를 해결하려면 MainActivity.this 같이 구체적으로 this가 어떤 클래스를 나타내는지 명시해주어야 합니다.

'명시할클래스명.this'와 같이 써주시면 됩니다.


이렇게 하면 this는 메인 액티비티를 가리키게 되어 더 이상 오류가 발생하지 않습니다.  


List of Articles
번호 제목 날짜 조회 수
177 안드로이드 android 개발 와이파이 유지 관련 2015.07.16 7034
176 안드로이드 - 플로팅 액션 버튼(Floating Action Button) 사용법 file 2021.04.02 969
175 안드로이드 - 프로그레스바(ProgressBar) 구현하기 file 2021.04.01 451
174 안드로이드 - 프레임레이아웃 (FrameLayout) file 2021.03.29 507
173 안드로이드 - 프래그먼트 (Fragment) 사용하기 file 2021.04.02 486
172 안드로이드 - 툴바(ToolBar)를 사용하여 앱바(App Bar) 구현하기 file 2021.04.01 448
171 안드로이드 - 토스트(Toast) 메시지 사용하기. file 2021.03.31 321
170 안드로이드 - 텍스트뷰(TextView) 사용법 정리 file 2021.03.31 1244
169 안드로이드 - 타이머(Timer) 구현하기 2021.04.01 1368
168 안드로이드 - 컨텍스트 메뉴(Context Menu) 사용 예제 file 2021.04.01 206
167 안드로이드 - 커스텀 폰트(Custom Font) 적용하기 file 2021.04.02 342
166 안드로이드 - 인텐트(Intent)를 활용한 액티비티(Activity)간 데이터 전달하기 file 2021.03.31 349
165 안드로이드 - 인텐트(Intent)를 활용한 액티비티(Activity) 생성 및 실행하기 file 2021.03.31 213
164 안드로이드 - 익명 클래스(Anonymous Class) 사용법 file 2021.03.31 281
163 안드로이드 - 옵션 메뉴 (Option Menu) 구현 방법 file 2021.04.01 283
162 안드로이드 - 에디트텍스트(EditText) 사용법 정리 file 2021.03.29 2750
161 안드로이드 - 액티비티(Activity)와 액티비티 생명 주기(Activity Life Cycle) file 2021.04.01 225
160 안드로이드 - 액티비티(Activity)로부터 결과 데이터 받아오기 file 2021.03.31 483
159 안드로이드 - 스타일 리소스(Style Resource) 사용하기 <style> file 2021.03.31 238
158 안드로이드 - 소방시설바이블 어플 소스 ( 폰갭, 폰갭플러그인, assets 폴더안의 파일 이용, pdf 리더기 선택, 유튜브재생기 선택 ) file 2015.06.29 7976
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 13 Next
/ 13

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved