Seize the day

POST : Android Dev Study

@IntentExtra 조각 코드, Kotlin을 쓴다면 다음 글에서 소개하는 intentXXX 확장을 쓰는게 낫다

@Target(AnnotationTarget.FIELD)
@Retention(AnnotationRetention.RUNTIME)
annotation class IntentExtra(val key: String)


    private fun handleIntentExtraAnnotation() {
        val extras = intent.extras ?: return
        this.javaClass.declaredFields.forEach { field ->
            val intentExtra = field.getAnnotation(IntentExtra::class.java) ?: return@forEach
            if (!extras.containsKey(intentExtra.key)) return@forEach
            field.isAccessible = true
            when (field.type) {
                Int::class.java -> field.setInt(this, extras.getInt(intentExtra.key, 0))
                Boolean::class.java -> field.setBoolean(
                    this, extras.getBoolean(intentExtra.key, false)
                )
                String::class.java -> field.set(this, extras.getString(intentExtra.key))
                Long::class.java -> field.setLong(
                    this, extras.getLong(intentExtra.key, 0L)
                )
            }
            field.isAccessible = false
        }
    }
top

posted at

2020. 3. 13. 17:49


CONTENTS

Seize the day
BLOG main image
김대정의 앱 개발 노트와 사는 이야기
RSS 2.0Tattertools
공지
아카이브
최근 글 최근 댓글
카테고리 태그 구름사이트 링크