본문 바로가기

Android/에러

(8)
java.lang.NoSuchMethodError: No virtual method elapsedNow()D in class Lkotlin/time/TimeMark 1. 발생 원인 Koin을 사용할 때, androidLogger에 아무것도 설정해주지 않으면 위 에러가 발생합니다. 그 예시로 다음과 같이 사용하시면 에러가 발생합니다. startKoin { androidLogger() androidContext(this@ApplicationClass) modules(beerSpecificModule, beerSpecificVMModule, recommendBeerModule, recommendBeerVMModule, feedbackModule, feedbackVMModule, refrigeratorModule, refrigeratorVMModule, userInfoModule, userInfoVMModule, writeAndReviseReviewModule, write..
Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 1 path $ 1. 발생 원인 JSON 포멧 데이터를 GSON 라이브러리를 통해 사용할 때 발생할 수 있는 오류입니다. 2. 해결 방법 retrofit 객체를 만들 때 gson 객체에 속성을 추가해서 설정해주면 됩니다. 먼저 아래처럼 retrofit 객체를 만들어줍니다. sRetrofit = Retrofit.Builder() .baseUrl(API_URL) .client(client) .addConverterFactory(GsonConverterFactory.create()) .build() 이때 GsonConvertFactory.create() 부분에 gson 객체를 만들어서 넣어주면 됩니다. gson 객체는 다음과 같이 만들어줍니다. val gson : Gson = GsonBuilder() .setLenient()..
could not find Fragment constructor 안녕하세요? 닉네임간편입니다. 이번 시간에는 제목에 있는 오류에 대해서 설명드리겠습니다. 1. 개요 이 에러는 RuntimeException 중 하나로, 프래그먼트를 만들 때 인자를 넣어서 만들었기 때문에 발생합니다. 왜냐하면 프래그먼트를 재생성할 때 빈 생성자가 있어야 하기 때문입니다. 따라서 인자를 넣어주고 싶다면 프래그먼트 자체를 만들 때 인자를 넣지 말고, 두 가지 방법을 사용할 수 있습니다. 1) FragmentFactory 이용 이 방법을 이용하면 프래그먼트에 인자를 넣어서 만들어줄 수 있습니다. 그러나 현재 이 방법을 이용하면 동일한 이름의 프래그먼트에 대해서는 다른 값을 줄 수 없기 때문에(제가 방법을 아직 못 찾은 걸수도 있지만) 사용하지 않았습니다. 2) arguments 이용 argu..
Missing required view with ID 1. 발생 원인 커스텀 뷰를 만들어서 사용할 때, 해당 커스텀 뷰를 다른 곳에서 사용할 때 바로 id를 사용하면 이 에러가 발생합니다. 즉, 예를 들어서 아래처럼 사용할 경우 위 에러가 발생합니다. 2. 해결 방법 커스텀 뷰는 다른 레이아웃 안에 포함시키고, 그 레이아웃에 ID 값을 할당해서 사용해야 합니다. 한 가지 예시로, 아래처럼 LinearLayout 으로 커스텀 뷰를 감싼 다음 사용하시면 됩니다.
Expected BEGIN_OBJECT but was STRING at line 1 column 1 1. 발생 원인 retrofit을 사용해서 데이터를 전달받을 때, response로 설정한 값과 들어온 값의 자료형이 다를 때 생기는 오류입니다. 예를 들어 제가 response에 해당하는 데이터 클래스를 다음과 같이 했다고 가정하겠습니다. data class RefrigeratorResult( val beerImgUrl: BeerImage, val nameKr: String, val beerId: Int ) 그런데 데이터가 실제로는 이런 형식으로 전달된다고 하겠습니다. data class RealRefrigeratorResult( val beerImgUrl: String, val nameKr: String, val beerId: Int ) 이때 저는 beerImgUrl 이라는 변수를 BeerImage라..
android:exported 안녕하세요? 닉네임간편입니다. 이번 시간에는 제목의 에러에 대해서 다루어보겠습니다. 1. 에러 전문 Apps targeting Android 12 and higher are required to specify an explicit value for android:exported when the corresponding component has an intent filter defined 2. 발생 원인 앱의 targetSdkVersion이 31 이상이면, 즉 안드로이드 12 이상을 타겟으로 설정했다면 애플리케이션의 모든 구성요소에 대해서 android:exported를 명시해주어야 합니다. 이전에는 이것이 default로 값이 설정되었지만, 이제는 모두 명시적으로 설정해주어야 합니다. 만일 다른 애플리케..
Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter intent 0. 에러가 발생했다. 그동안 계속 프로그램이 잘 돌아가다가 갑자기 이런 에러가 발생했다. intent를 전달하면서 발생하는 오류였는데, 정말 상상치도 못한 곳에서 에러가 발생하여 놀랐다. 특히 intent는 정말 자주 사용하고 정말 오류가 없었기에 놀랐다. 그리고 해결하는 데에도 좀 걸리긴 했지만, 다행이 오래 걸리진 않았다. 1. 원인 intent로 전달하는 Parcelable 한 객체 안에 null 값이 있으면 이런 오류가 발생한다. 따라서 모두 null 처리를 해주거나, 혹은 이런 값은 전달하지 않아야 한다. 나도 retrofit으로 데이터를 전달받아서 intent로 넘기려고 했는데, 이때 전달받는 데이터에 없는 변수가 하나 있었고, 따라서 null 변수가 매번 데이터에 포함되었었다. 그리고 이를..
resource android:color/system_neutral1_1000 not found 안녕하세요? 닉네임간편입니다. 이번 시간에는 제목의 오류에 대해서 알아보겠습니다. 1. 발생 원인 Material Components library의 버전이 1.5.0-alpha03으로 업데이트되면서, complieDskVersion 31을 요구하기 때문에 발생합니다. 2. 해결 방법 build.gradle(app)에 있는 complieSdkVersion을 31로 바꾸어주면 이 에러는 해결됩니다. compileSdkVersion "$사용하고 있던 버전" 이것을 아래처럼 바꾸면 됩니다. compileSdkVersion 31 Material Components library의 버전 및 업데이트 내역에 대한 자세한 사항은 아래 사이트에서 확인하실 수 있습니다. https://github.com/material..

728x90
반응형