0101011001010111

Android - [여기서 @는 뭘 뜻하는 걸까 ?] 예 : Intent(this@FirstActivity, SecondActivity::class.java) 본문

Kotlin/[스스로]Kotlin&안드로이드

Android - [여기서 @는 뭘 뜻하는 걸까 ?] 예 : Intent(this@FirstActivity, SecondActivity::class.java)

[진주] 2023. 9. 4. 08:29
728x90
반응형
binding.firstbuttonGosecond.setOnClickListener {
    val intent = Intent(this@FirstActivity, SecondActivity::class.java)
    startActivity(intent)
}

뷰바인더를 사용하다가 이 @는 왜 써줘야하나, 의미를 찾아보기로 했다.

 


 

먼저 위 내용이 있는 전체 코드를 보자 

 

 

FirstActivity.kt

package com.example.test

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.example.test.databinding.ActivityFirstBinding

class FirstActivity : AppCompatActivity() {

    private lateinit var binding: ActivityFirstBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        binding = ActivityFirstBinding.inflate(layoutInflater)
        setContentView(binding.root)

        // 바로 리스너 설정
        binding.firstbuttonGosecond.setOnClickListener {
            val intent = Intent(this@FirstActivity, SecondActivity::class.java)
            startActivity(intent)
        }



    }
}

 

 

 

포스팅을  하던 중, inner 클래스가 궁금하여 정리해보았다. ▼

https://vjinjoov.tistory.com/manage/posts/

 

 

 

FirstActivity의 onCreate 메서드 안에서는 기본적으로 this가 FirstActivity 인스턴스를 참조합니다. 

 

그러나 setOnClickListener 람다의 안쪽에서는 this가 람다를 의미하게 됩니다.

람다식 또는 익명 내부 클래스 내에서 바깥쪽 클래스의 this를 참조하고 싶을 때 @를 사용하여 명시적으로 바깥쪽 클래스를 지정해줍니다.

이 경우, setOnClickListener 내부에서 this만 사용하면 그것은 View.OnClickListener의 인스턴스를 참조하게 됩니다. 따라서 FirstActivity의 인스턴스를 참조하고 싶을 때 this@FirstActivity를 사용합니다.

간단하게 표현하면, 우리가 setOnClickListener 람다 내부에서 있는데 FirstActivity를 명시적으로 가리키기 위해서 @를 사용한 것입니다.

 

728x90
반응형

'Kotlin > [스스로]Kotlin&안드로이드' 카테고리의 다른 글

4-2 인텐트 연결해보기  (0) 2023.09.05
Android 입문 (복습) intent  (0) 2023.09.04
Android - inner Class  (0) 2023.09.04
입문 - 복습 / 액티비티  (0) 2023.09.04
viewBinding 사용법 정리  (0) 2023.08.31