Today I Learn

이미지 로딩 라이브러리 중 하나인 Colil을 Compose UI에서 로딩 시, 실패했을 경우의 Error를 확인하기 위한 방법입니다. val painter = rememberAsyncImagePainter( model = ImageRequest.Builder(context).data(item.imageUrl) .placeholder(R.drawable.blank_ad).build())인자로 받은 item의 imageUrl을 통해 이미지를 로딩합니다. 물론 manifest에 인터넷 사용 권한이 허가되어 있는지 또한 반드시 체크해 주세요.로딩했는데, placeholder의 Drawable로 표시되면 뭔가 문제가 있는 것이겠지요? val state = painter.statepainter의..
기존 Realm DB 스키마에 Nullable한 필드를 새로 추가해야 해서 마이그레이션 작업을 진행했습니다. 그런데, 계속 모든 값이 null로 표시되고, 정상적인 데이터 입출력 처리가 안 되는 문제를 발견했습니다. 구글링 해보니 특정 필드를 nullable 하게 처리하려면 아래와 같이 마이그레이션을 진행해야 했습니다. case 19: schema.get("Notification") .addField("notificationId", int.class) .setNullable("notificationId", true); break; 기본적으로 Nullable은 false 처리가 되어있기 때문에 true로 변경해 줍니다. 이후 정상적인 입출력 처리가 가능했습니다.
- 두 배열 간의 합집합 : union() val array1 = arrayOf(1, 2, 3, 4, 5) val array2 = arrayOf(4, 5, 6, 7, 8) // 합집합 구하기 val union = array1.union(array2).toTypedArray() println("합집합: ${union.joinToString(", ")}") - 두 배열 간의 차집합 : subtract() val array1 = arrayOf(1, 2, 3, 4, 5) val array2 = arrayOf(4, 5, 6, 7, 8) // 차집합 구하기 val difference1 = array1.subtract(array2).toTypedArray() val difference2 = array2.subtrac..
Android Compose에서 Context 사용하기 Compose - ComponentActivity에서는 기존 AppCompatActivity와는 다르게 바로 context를 가져올 수 없는 것을 발견했다. Compose에서는 현재 화면에 대한 Context를 참조하는 'LocalContext'를 활용해야 한다. class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { FeatherAndroidTasksTheme { // Provide the current context using Composition..
다음과 같은 두 개의 List를 각각 인덱스 순서대로 짝을 맞추어 Map으로 변환하려 한다. zip() : 두 개의 리스트를 쌍으로 묶어준다. toMap() : Map으로 변환한다. val map = name.zip(yearning.toTypedArray()).toMap()
아래와 같이 api 호출 인터페이스를 구성하여 서버와의 통신을 시도했는데, EOFException이 발생했다. interface TestApi { @PUT("/api/test") fun update( @HeaderMap headers: HashMap, @Body request: BodyRequest ): Call } java.io.EOFException: End of input at line 1 column 1 path 통신 후, Response를 반환하는데 Empty Response를 반환하고 있었다. 하지만 내가 작업하면서 NormalResponse Type으로 반환되도록 구성하면서 발생하는 것이 원인이었다. 이 경우 2가지 해결 방법이 존재했다. 1. NormalResponse가 아니라 Unit으로..
제일 상위에 있는 차원의 배열을 해제해 준다. List 형태로 반환되며, 모든 중첩 배열을 해제해 주기 위해 n 차원만큼 flatten() 처리해주어야 한다. fun main() { val arr = arrayOf(arrayOf(1,2,3), arrayOf(7,8,9), arrayOf(arrayOf(100, 101, 102), arrayOf(201, 202, 203))) println(arr.contentDeepToString()) val arr2 = arr.flatten() println(arr2.toString()) }
사용자의 디바이스를 식별하거나 정보 파악을 위해서 id 또는 기기명, OS 버전 등의 확인이 필요한 경우가 있다. 이러한 정보를 Build Class에서 가져올 수 있다. GPT를 통해 확인한 Build Class에 담긴 정보는 아래와 같다. 1. Build.VERSION: Android 운영 체제의 버전 정보를 제공합니다. 예를 들어, Build.VERSION.SDK_INT를 통해 API 레벨(안드로이드 버전 코드)을 얻을 수 있습니다. 2. Build.VERSION_CODES: Android API 레벨을 상수로 정의한 클래스입니다. 코드에서 각 버전에 대한 조건을 확인할 때 사용됩니다. 3. Build.MODEL: 기기의 모델 이름을 제공합니다. 4. Build.MANUFACTURER: 제조사 정보..
Crashlytics 살피던 중, 아래와 같은 Error Report를 발견했다. Fatal Exception: java.lang.IllegalArgumentException: View=DecorView@b5f5db7[TestActivity] not attached to window manager at android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:657) at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:564) at android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.j..
개발을 진행하면서 App에 특정 테마 색상을 지정하고 싶은 경우가 있다. 그때 테마가 어두운 계열인지 밝은 계열인지에 따라 Full Screen이 아닌 이상 Status Bar와 Navigation바 아이콘 색상을 테마 색상에 대해 반전시키는 것이 좋다. val isDarkTheme = AppTheme.isDarkTheme() //Custom function to check if it is dark theme WindowInsetsControllerCompat(window, window.decorView).isAppearanceLightStatusBars = !isDarkTheme WindowInsetsControllerCompat(window, window.decorView).isAppearanceLi..
SeungYong.Lee
'Today I Learn' 카테고리의 글 목록