본문 바로가기

분류 전체보기75

[Kotlin] Fragment already added: DialogFragment 운동일지 App을 개발하는 중 발생한 오류이다. setOnClickListener 로 버튼을 클릭하면, DialogFragment의 메소드 show()로 Fragment를 띄웠는데 버튼을 연타하니 Fragment가 이미 추가되었다는 메시지를 받게되었다. 해결책 button.setOnClickListener { if(!DialogFragment.isAdded) DialogFragment.show(childFragmentManager,"SEARCH_DIALOG") } DialogFragment가 추가되지 않았다면 Show 메소드를 실행하도록 하여 해결! 2022. 2. 3.
[Kotlin] Adpater에서 Room Database Delete Event 받기 1. Adpater 매개변수로 onDeleteCallBack 이라는 변수 -> 람다 함수를 반환 -> 람다함수는 Routine 값을 매개변수로, Unit을 리턴값으로 갖는다. class RoutineAdapter(private val onDeleteCallBack: (Routine) -> Unit) : {} 2. Adpater item 중 클릭 되었을 때 onDeleteCallBack을 호출하고 싶은 곳에 작성 override fun onBindViewHolder(holder: RoutineViewHolder, position: Int) { val currentItem = routineList[position] holder.binding.deleteBtn.setOnClickListener { onDele.. 2022. 2. 3.
[Kotlin] Coroutines (코루틴) 코루틴이란? 비동기적으로 실행되는 코드를 간소화하기 위해 Android에서 사용할 수 있는 동시 실행 설계 패턴이다. 코루틴을 사용할 때의 이점 기본 스레드를 차단하여 앱이 응답하지 않게 만들 수도 있는 장기 실행 작업을 관리하는 데 수월하다. 코루틴을 사용하면 세부적인 제어를 통해 스레드를 전달할 수 있다. withContext()를 사용하면 콜백을 도입하지 않고도 코드 줄의 스레드 풀을 제어할 수 있으므로 데이터베이스에서 읽기, 네트워크 요청 실행과 같은 매우 작은 함수에 이를 적용할 수 있다. 코루틴 기능 4가지 경량: 코루틴을 실행 중인 스레드를 차단하지 않는 정지를 지원하므로 단일 스레드에서 많은 코루틴을 실행할 수 있습니다. 정지는 많은 동시 작업을 지원하면서도 차단보다 메모리를 절약합니다. .. 2022. 2. 1.
Android Icon drawable 추가하기 (Vector Asset) res -> new -> Vector Asset 빨간 동그라미 부분 클릭 사용하고 싶은 아이콘 선택 골랐으면 OK 버튼 눌러주고 색상, 크기를 지정해준 뒤, Next 버튼 클릭 마지막으로 Finish 버튼까지 클릭해주면 아이콘 추가 완료! 아이콘의 위치는 res/drawable 2022. 1. 27.