[Kotlin] for 루프에서 리스트에 원소 추가, 루프 끝나고 원소 하나 더 추가 => 오류 발생

forEachIndexed 블록 안의 for 루프 안에서 리스트에 원소를 추가하였다. 이 루프가 끝나고 그 리스트에 원소를 하나 더 추가하자 오류가 발생했다( java.lang.IndexOutOfBoundsException). if 문을 써서 문제를 해결했다. for 루프 밖에서 원소를 하나 더 추가하자 오류 발생 val numbers: MutableList<MutableList<Int>> // numbers 는 이미 다른 곳에서 초기화 되어 있다. val intervals: MutableList<MutableList<Int>> = mutableListOf() for (i in … Read more

[Kotlin][deep copy] 리스트의 마지막 원소가 사라져 버렸다.

Kotlin 코드에서 deep copy 를 하지 않은 채 원본을 clear 하니까 리스트의 마지막 원소가 사라지는 문제가 발생했다. 리스트의 마지막 원소만 사라진다. val testList: MutableList<Int> val listOfTestList: MutableList<List<Int>> .forEach 블록 내에서 testList 를 몇 개 생성하면서 listOfTestList 에 추가하였다: listOfTestList.add(testList) 나중에 listOfTestList 를 출력해 보니 감쪽같이 마지막 원소만 사라졌다. 마지막 element 가 [] 이렇게 빈 채로 … Read more

[해결]error.NonExistentClass: Hilt 로 ViewModel 에 Proto DataStore 인스턴스 전달할 때

Proto DataStore 에 Hilt 를 적용할 때 컴파일 오류가 발생하여 해결한 방법을 공유한다. Hilt + Proto DataStore + ViewModel 에서 문제 발생 지난 글에서 build.gradle.kts 를 공개한 이후 Proto DataStore 를 익혔다(지난 글: https://hhtt.kr/103026). 그런데 코드에 ViewModel Factory 를 이용해서 DataStore 인스턴스를 ViewModel 에 넣어주도록 되어 있어서 Hilt 로 주입하도록 바꾸려고 했다. 이 때, Preferences … Read more

[Attachment] build.gradle.kts for Compose + Retrofit + KSP + Room + Hilt

In order to apply Hilt to my project, I modified build.gradle.kts and updated Compose, Retrofit, KSP, Room, Hilt, etc. to the latest. Both build.gradle.kts are provided in an attachment. Korean version of this posting: https://hhtt.kr/103026 I decided to use Hilt. After struggling for over a day to apply HIlt to my project, I succeeded the … Read more

[첨부] build.gradle.kts for Compose + Retrofit + KSP + Room + Hilt

프로젝트에 Hilt 를 적용하기 위해서 build.gradle.kts 를 수정하고, 내친김에 Compose, Retrofit, KSP, Room, Hilt 등을 최신으로 판올림하였다. 두 build.gradle.kts 를 첨부 파일로 제공한다. Korean version of this posting: https://hhtt.kr/103039 Hilt 를 사용하기로 했다. 내 프로젝트에 HIlt 를 적용하기 위해서 하루 넘게 씨름을 하다가 그저께 저녁에 성공했다. 내가 목표한 것은, container 에 담긴 채 ViewModel Factory … Read more

Jetpack Compose, how to force recomposition manually

There are times when Jetpack Compose does not allow necessary recomposition right away. In this case, let’s find out how to force immediate recomposition manually. I changed the state value, but why doesn’t the button appear? What I wanted was for when I press a button, another button would appear somewhere else. I thought the … Read more

Jetpack Compose, 수동으로 recompose 하는 방법

내가 원하는데 Jetpack Compose 가 바로 recompose 해주지 않을 때가 있다. 이 때 수동으로 즉시 recompose 되게 하는 방법을 알아본다. 상태값을 바꿨는데 왜 단추가 안 나타나는 거지? 내가 원했던 것은, 내가 어떤 단추를 눌렀을 때 다른 곳에 다른 단추가 나타나게 하는 거였다. 논리는 맞다고 생각했는데 단추는 나타나지 않았다. 혹시나 해서 화면을 옆으로 돌려 보았다. 그러자 … Read more

안드로이드 프로젝트 디렉터리 이름에 쉼표가 있으면?

잘 실행되던 안드로이드 프로젝트를 복사하여 새 프로젝트를 만들어서 이를 실행하였는데 처음 보는 오류가 발생하였다. 디렉터리(폴더) 이름에 쉼표가 있으면 어떤 문제가 생기는지 알아본다. 안드로이드 프로젝트 복사본 만들기 지난 두어 달 앱 개발 공부를 하면서 이런저런 오류를 많이 경험하였다. 이번에는 또 다른 오류가 등장했다. 프로젝트 코드에 중요한 변화가 생길 시점이 되면 나는 습관적으로 복사본을 만들어서 새 프로젝트를 … Read more

How to easily resolve `Execution failed for task ‘:app:kspDebugKotlin” in Android app

When trying to use the Room database in an Android app, execution of the Android app failed due to a Java version mismatch related to ksp. I present an easy way to solve this problem without failure. (Korean version of this article: https://hhtt.kr/102886) Java version mismatch error occurred regarding Room and ksp When I was … Read more