분류 전체보기 320

Kotlin by VS .value collectAsStateWithLifecycle

val groupsUiState by viewModel.groupsUiState.collectAsStateWithLifecycle() val groupsUiState = viewModel.groupsUiState.collectAsStateWithLifecycle().value 두 코드는 Kotlin의 by 키워드를 사용하는 방식과 직접 .value를 호출하는 방식의 차이를 보여줍니다.   val groupsUiState by viewModel.groupsUiState.collectAsStateWithLifecycle() 이 코드는 Kotlin의 위임 프로퍼티(delegated property)를 사용합니다. by 키워드를 사용하면 groupsUiState의 값은 viewModel.groupsUiState..

MutableStateFlow .update VS .value = 차이점

private val _uiState = MutableStateFlow(UiState.Loading)_uiState.update { when (state) {VS_uiState.value = state 두 방법 모두 MutableStateFlow의 값을 업데이트하는 방법이지만, 사용 상황에 따라 적합한 방법이 다르다._uiState.update { }: 이 방법은 현재 MutableStateFlow의 값에 기반하여 새 값을 계산할 때 유용하다. 이 함수는 현재 값을 인자로 받는 람다 함수를 사용하며, 람다 함수의 반환 값이 새로운 값으로 설정됨.  _uiState.value = state: 이 방법은 새 값이 현재 값에 의존하지 않을 때 사용한다. 이 방법은 단순히 MutableStateFlow의 ..

listOf()와 emptyList() 차이

listOf()와 emptyList() 모두 코틀린에서 빈 리스트를 생성하는 함수. listOf()는 가변 인자를 받아서 리스트를 생성하는 함수다. 인자 없이 호출하면 빈 리스트를 반환한다.  emptyList()는 항상 빈 리스트를 생성하는 함수로 listOf()와 emptyList()는 인자 없이 호출할 경우 동일한 결과, 즉 빈 리스트를 반환함. 그러나 이 두 함수 사이에는 성능 차이가 있다. emptyList()는 항상 같은 인스턴스를 반환하기 때문에 새로운 객체를 생성하지 않음. 반면에 listOf()는 호출할 때마다 새로운 리스트를 생성함.  따라서 빈 리스트를 생성할 때는 emptyList()를 사용하는 것이 더 효율적.

Missing type, Progard, Generic 문제

java.lang.RuntimeException: Missing type parameter. at cohttp://m.google.gson.reflect.TypeToken.getSuperclassTypeParameter(Unknown Source:26) at cohttp://m.google.gson.reflect.TypeToken.(SourceFile:1) at U2.e$a.(SourceFile:1) at U2.e.a(SourceFile:8) 1. 위와 같은 문제 발생시 위치를 알기 어렵다. --> Release, Debug 모두 확인 시 Release 에서만 발생 확인 2. Release 에서만 발생 --> 의심; minify, progard --> 소스를 제대로 읽지 못해 발생 할 수 있으므로 2. ..

티스토리 코드블럭 가로스크롤 만들기

티스토리 코드 블럭을 적용하면 가로 스크롤이 기본으로 적용되지 않아서 아래와 같이 간단하게 적용해야만 한다. 그렇지 않으면 가독성이 좋지 않다. 1. 관리자 모드에서 좌측 스킨 편집으로 진입 한뒤 2. 아래 그림에 보이는 html 편집을 선택 3. CSS 편집 CSS 편집을 눌러준 뒤 4. 가로 스크롤 코드 넣기 아래로 쭈욱 길게 CSS 파일이 나오는데 아래로 스크롤해서 맨 마지막에 아래 코드를 붙여 넣으면 끝. .hljs { white-space: pre; overflow-x: auto; } 5. 아래 코드를 보면 스크롤 바가 생긴 것을 확인할 수 있다. class Activity : AppCompatActivity() { @SuppressLint("ClickableViewAccessibility") ..

Caused by: java.lang.IllegalArgumentException: MaterialThemeUsingMdcTheme requires the host context's theme to extend Theme.MaterialComponents

Caused by: java.lang.IllegalArgumentException: MaterialThemeUsingMdcTheme requires the host context's theme to extend Theme.MaterialComponents at com.google.android.material.composethemeadapter.MdcTheme.createMdcTheme(MdcTheme.kt:134) at com.google.android.material.composethemeadapter.MdcTheme.createMdcTheme$default(MdcTheme.kt:125) at com.google.android.material.composethemeadapter.MdcTheme.Mdc..