원래 반복되는 코드를 매우 귀찮아 하던 차에 layout id 를 class name 을 기반으로 가져오도록 코딩을 해 놓은게 있었는데 (아래 참조)
private var mLayoutName = generateLayoutName()
inline fun Fragment.generateLayoutName(): String {
val name = javaClass.simpleName
var layoutName = name[0].toLowerCase().toString()
name.substring(1, name.length).forEach {
layoutName += if (it.isUpperCase()) {
"_${it.toLowerCase()}"
} else {
it
}
}
return layoutName
}
그렇게 사용하면 해당 레이아웃 리소스가 사용되는지 안되는지 알 수가 없는 문제가 있다! 라는 의견을 들어
생각해보니 그렇네 싶긴 한데, 이미 편한건 맛을 본 상태라 어떻게 이걸 풀까? 고민 하던 차에
잘 이용하던 live template 으로 이를 해결이 될까? 하고 잠시 짬을 내서 봤더니만 역시나 된다.
일단 기존에 사용 하던 코드를 주석 처리 하고
// @LayoutRes
// open fun layoutId() = resources.getIdentifier(mLayoutName, LAYOUT, packageName)
해당 메소드를 abstract 로 변경 한 뒤
@LayoutRes
abstract fun layoutId(): Int
live template 에 아래와 같이 코드를 추가하였다.
@LayoutRes
override fun layoutId() = R.layout.$layoutName$
이때 $layoutName$ 은 edit variables 버튼을 선택하면 해당 변수에 대해 값을 지정할 수 있는데
기존 방식과 유사하게 파일명을 참조 하도록 아래와 같이 추가 했다.
snakeCase(fileNameWithoutExtension())
이로써 리소스 사용유/무에 대한 이슈는 해결
private var mLayoutName = generateLayoutName()
inline fun Fragment.generateLayoutName(): String {
val name = javaClass.simpleName
var layoutName = name[0].toLowerCase().toString()
name.substring(1, name.length).forEach {
layoutName += if (it.isUpperCase()) {
"_${it.toLowerCase()}"
} else {
it
}
}
return layoutName
}
그렇게 사용하면 해당 레이아웃 리소스가 사용되는지 안되는지 알 수가 없는 문제가 있다! 라는 의견을 들어
생각해보니 그렇네 싶긴 한데, 이미 편한건 맛을 본 상태라 어떻게 이걸 풀까? 고민 하던 차에
잘 이용하던 live template 으로 이를 해결이 될까? 하고 잠시 짬을 내서 봤더니만 역시나 된다.
일단 기존에 사용 하던 코드를 주석 처리 하고
// @LayoutRes
// open fun layoutId() = resources.getIdentifier(mLayoutName, LAYOUT, packageName)
해당 메소드를 abstract 로 변경 한 뒤
@LayoutRes
abstract fun layoutId(): Int
live template 에 아래와 같이 코드를 추가하였다.
@LayoutRes
override fun layoutId() = R.layout.$layoutName$
이때 $layoutName$ 은 edit variables 버튼을 선택하면 해당 변수에 대해 값을 지정할 수 있는데
기존 방식과 유사하게 파일명을 참조 하도록 아래와 같이 추가 했다.
snakeCase(fileNameWithoutExtension())
이로써 리소스 사용유/무에 대한 이슈는 해결
'Android' 카테고리의 다른 글
BuildConfig 내 APPLICATION_ID Deprecated 됨 (0) | 2019.08.23 |
---|---|
viewmodel 에서 lifecycle 관리 (0) | 2019.08.23 |
androidx.databinding.Observable mock (0) | 2019.08.22 |
android studio 3.5 출시 (0) | 2019.08.22 |
Missing import expression although it is registered (0) | 2019.08.22 |