본문 바로가기

IT/kotlin언어

[Kotlin] 코틀린 확장 함수 (Kotlin extension functions) 예제 및 정리

안녕하세요 YTS 입니다.


오늘은 코틀린에 확장 함수 (Kotlin extension functions)! 에 대해 알아보려고합니다.


당연히! 이 글을 쓴다는거 자체가 확장함수를 지원한다는 얘기겠죠?


우선 전체적으로 공개하는 확장 함수부터 알아볼까요?


1.Kotlin 파일을 생성합니다! class 파일이 아닌 코틀린 파일로 생성해주세요! 




저는 extenstion 이라는 패키지 밑에 파일을 


생성했어요!



2. 확장 함수를 구현해주세요! 


package com.yts.healing.extension

import android.content.Context
import android.view.inputmethod.InputMethodManager
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity


/**
* 키보드 가리기
*/
fun AppCompatActivity.hideKeyboard() {
val inputMethodManager = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager?
if (inputMethodManager != null && currentFocus != null) {
inputMethodManager.hideSoftInputFromWindow(currentFocus!!.windowToken, InputMethodManager.HIDE_NOT_ALWAYS)
}
}

/**
* 토스트 만들기
*/
fun AppCompatActivity.makeToast(id: Int) {
Toast.makeText(this, this.getString(id), Toast.LENGTH_LONG).show()
}

fun AppCompatActivity.makeToast(text: String) {
Toast.makeText(this, text, Toast.LENGTH_LONG).show()
}


저는 AppCompatActivity에서 키보드 가리기 기능과 토스트 만들기 기능을 사용하고 싶어 이렇게 만들었습니다.



3. 확인

package com.yts.healing.ui.activity

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.yts.healing.extension.hideKeyboard
import com.yts.healing.extension.makeToast

class TestActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
}

override fun onBackPressed() {
this.hideKeyboard()
this.makeToast("종료합니다!!!!!!")
super.onBackPressed()
}
}


override fun onBackPressed()에서 정상적으로 hideKeyboard와 makeToast를 사용할 수 있는 모습으로 나옵니다.

감사합니다 : )