Android(60)
-
[ERROR/EXCEPTION] Dialog IllegalStateException
[이슈] 붙은 Activity의 생명주기 이후에 Dialog가 동작하는 경우 IllegalStateException 발생 java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState [원인] Activity가 종료될 때 onSaveInstanceState가 호출이 되는데 Activity가 예기치 않게 소멸될 경우 저장되는 Bundle객체로 전달이 된다. 이때, Bundle 객체로 전달되는 정보는 자신의 Fragment, Dialog, View 등에 대한 정보이고, 이를 시스템 프로세스로 보내 안전하게 보관하고 있다가 추후 시스템이 Activity를 다시 생성하기로 결정했을 때 복구한다. 따라서, 이 시점 이후로..
2022.01.08 -
Dialog vs DialogFragment
Dialog와 DialogFragment의 차이점 1. Dialog는 자신만의 window를 가지나, DialogFragment는 상위 Activity의 window를 공유한다. 2. Dialog보다 DialogFragment 사용이 권장되는데 이는 Fragment가 가진 생명주기의 이점 때문이다.
2022.01.08 -
권한 변경 시 생명주기
[이슈] 권한 변경에 의한 프로세스 종료시, 재시작 생명주기에서 기존에 붙어있던 프래그먼트가 자동으로 생성되어 액티비티에 붙어있으나, 설정했던 클릭 리스너는 생성되지 않아 동작하지 않음 CallgateMng implements ClickListener + showDialog에서 CallgateDialog 생성 CallgateDialog extends DialogFragment // 동작 과정은 로그를 통해.. 2022-01-06 14:58:06.439 18539-18539/com.hanwhalife.hiw.qa I/KMJTEST: [MainActivity] onCreate() : 68431783 2022-01-06 14:58:10.268 18539-18539/com.hanwhalife.hiw.qa I/K..
2022.01.06 -
Jetpack - Compose
- Compose : 선언형 UI 툴킷으로, 처음부터 화면 전체를 개념적으로 재생성한 후 필요한 변경사항만 적용하는 방식으로 작동 - Compose 특징 @Composable 주석을 이용하여 Compose Compiler에게 UI로 반환되는 요소임을 알림 함수의 파라미터로 필요한 data를 받을 수 있음 => 동적인 처리가 가능(not xml, written in kotlin) 함수 내부에서 다른 Compose 함수를 불러 UI 계층화를 이룸 반환값이 없음 빠르고, 부수효과가 없이 멱등적(input이 같으면 output도 동일) => 즉, random() 혹은 global 변수 변경 작업 등을 포함하지 않아야 함 React와 유사한 UI 패러다임으로 계층 구조를 따라 data는 아래 방향을 따라 even..
2021.10.28 -
Navigation
navigation이란? 프래그먼트 간 전환을 위해 스토리보드를 통해 액션을 제공하는 라이브러리 navigation 사용법 build 설정 사용할 프래그먼트 생성 res > navigation > navigation파일에서 스토리보드 생성 액티비티 layout에서 navigation 설정 (추가) type safety를 위한 설정 1. build 설정 def nav_version = "2.3.5" // Kotlin implementation "androidx.navigation:navigation-fragment-ktx:$nav_version" implementation "androidx.navigation:navigation-ui-ktx:$nav_version" 2. 사용할 프래그먼트 생성 // Fir..
2021.08.13 -
DataBinding
DataBinding이란? UI와 데이터소스를 연결하는 방식 DataBinding 특징 단방향 데이터 바인딩 - 표현식 : "@{[args]}" 양방향(two-way) 데이터 바인딩 지원 - 표현식 : "@={[args]}" DataBinding 사용법 build 설정 layout 추가 설정 데이터바인딩 추가 layout에서 표현식으로 값 사용 1. build 설정 android { ... buildFeatures { dataBinding true } } 2. layout 추가 설정(layout태그로 감싸고, 필요한 경우 data 설정해 변수 추가) ... 3. 데이터바인딩 추가 // 필수 설정(lifecycleOwner는 LiveData 사용위해 설정 필요) val binding = DataBindin..
2021.08.13