코틀린으로 작성한 확장 함수를 안드로이드에서 사용해보기

오늘은 코틀린에서 사용할 수 있는 확장 함수라는 것을 안드로이드에서 사용해보려 합니다.

개요

fun (확장하려는 대상 클래스).(추가하려는 메소드)(){
   // 내용
}

확장 함수는 확장하려는 클래스의 이름과 추가하려는 새로운 메소드를 적으면 굳이 클래스를 상속받지 않고도 마치 그 클래스의 메소드인 듯이 사용할 수 있습니다.

안드로이드 사용법

안드로이드에서도 예외가 아닙니다.

object ExtensionFunction{
    fun Activity.custom_toast(text : String){
        longToast("$text!!")
    }
}

Activity 클래스에서 확장하려고 위 코드와 같이 구현하면 모든 엑티비티에서는 엑티비티에서 제공하는 메소드처럼 자유롭게 쓸 수 있습니다.

당연히 String 클래스에도 확장함수를 적용할 수 있습니다.

class MainActivity : BaseActivity() {
    private val bind by lazy { DataBindingUtil.setContentView<ActivityMainBinding>(this, R.layout.activity_main) }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        bind
        
        custom_toast("hello,world")
    }
}

위 예시는 AppCompatActivity 클래스를 상속받은 BaseActivity를 구현한 것을 이용한 것며, 데이터 바인드를 적용한 모습입니다.

중요한 것은 onCreate 메소드에서 기본적인 메소드처럼 작동한다는 부분입니다.

Written on August 2, 2018