-
[android] this와 this@android 2023. 2. 16. 23:24
프로젝트를 진행하던 중 의문이 생겨서 적어본다.
class SignUpActivity : AppCompatActivity() { private lateinit var viewBinding: ActivitySignUpBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) viewBinding = ActivitySignUpBinding.inflate(layoutInflater) setContentView(viewBinding.root) viewBinding.btnIndividual.setOnClickListener { startActivity(Intent(this,IndividualSignUpActivity::class.java)) } } }
여기서는 this를 사용해도 오류가 나지 않는다.
class SignUpActivity : AppCompatActivity() { private lateinit var viewBinding: ActivitySignUpBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) viewBinding = ActivitySignUpBinding.inflate(layoutInflater) setContentView(viewBinding.root) viewBinding.run { btnIndividual.setOnClickListener { startActivity(Intent(this@SignUpActivity,IndividualSignUpActivity::class.java)) } btnOrganization.setOnClickListener { startActivity(Intent(this@SignUpActivity,OrganizationSignUpActivity::class.java)) } } } } }
여기서는 this를 사용하면 오류가 나고 this@SignUpActivity라고 해야 오류가 나지 않는다.
Qualified this
찾아보니 외부 this 범위에서 접근하려면 this@SignUpActivity처럼 사용한다.
의미는 SignUpActivity의 this라는 뜻이다.
Implicit this
멤버 함수의 this를 호출할 때, this를 생략할 수 있다.
https://kotlinlang.org/docs/this-expressions.html#implicit-this
'android' 카테고리의 다른 글
[android] NestedScrollView에서 ViewPager2가 슬라이드 이동을 하지 않는 문제 (0) 2023.09.10 [android] ConstraintLayout 화면 비율 유지하기 (0) 2023.02.18 [해결하기] TalkBack- focus 부분과 accessiblity 부분 처리 (0) 2023.01.26 [android] Drawing circle (0) 2023.01.14 화면 크기에 상관없이 View 비율 일정하게 하기 (0) 2023.01.13