안드로이드 21

[Android/Kotlin] Live Data 테스트 오류 (Method getMainLooper in android.os.Looper not mocked.)

Live Data 테스트 오류 (Method getMainLooper in android.os.Looper not mocked.) 안드로이드 개발 중 TDD 개발 방식 연습 중 오류가 발생하였다. 알고 보니 라이브 데이터를 테스트하기 위한 설정이 잘 못 되어있었다. 발생 오류 TDD 개발 방식 연습 중 아래와 같은 오류와 마주쳤다. Method getMainLooper in android.os.Looper not mocked. See http://g.co/androidstudio/not-mocked for details. java.lang.RuntimeException: Method getMainLooper in android.os.Looper not mocked. 문제 원인 JUnit4 환경에서 라이브..

[Android/Kotlin] Koin 라이브러리 설정 문제

[Android/Kotlin] Koin 라이브러리 설정 문제 라이브러리 : Koin InsertKoinIO/koin: Koin - a pragmatic lightweight dependency injection framework for Kotlin (github.com) Koin 3.1 | Koin (insert-koin.io) 발생 오류 코인을 사용하기 위해 찾아본 여러 블로그대로 앱 수준 build.gradle에 dependiecies에 아래 코드를 추가하니 프로젝트에서 라이브러리를 찾지 못하였다. dependencies { // koin DI implementation "org.koin:koin-android:3.1.6" } 문제 원인 Koin 라이브러리 공식 홈페이지를 확인하니 dependecie..

[Android/Kotlin] Room 이용 로컬 DB에 사용자 정의 자료형 및 리스트 추가(@Embed, @TypeConverter)

Room 이용 로컬 DB에 사용자 정의 자료형 및 리스트 추가(@Embed, @TypeConverter) 안드로이드에서는 로컬 DB로 sqlite를 사용한다. 보통 Room 라이브러리를 통해 이를 사용하는데 기본 자료형 외 사용자 정의 자료형이나 리스트 자료형 등을 저장할 때 아래와 같이 오류가 발생한다. 이를 해결하고 로컬 DB에 저장할 수 있는 방법을 알아보자. 발생 오류 error: Cannot figure out how to save this field into database. You can consider adding a type converter for it. 사용자 정의 자료형 추가 (@Embeded) 사용자 정의 자료형을 로컬 DB에 추가하려 할 때, 해당하는 필드 앞에 @Embeded를..

[Android/Kotlin] Kotlin 코드에서 LinearLayout에 동적으로 Custom Layout(<include />) 추가

안드로이드 개발 중에 코틀린 코드 상에서 LinearLayout에 동적으로 Custom Layout을 추가해야했다. 이 때 사용한 코드를 기술한다. 먼저, AppCompatActivity.getSystemService()를 통해 LayoutInflater를 얻어온다. val layoutInflater = this.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater 얻어온 LayoutInflater를 통해 추가(include)할 커스텀 레이아웃을 얻어온다. val customLayout = layoutInflater.inflate(R.layout.custom_layout, null) 커스텀 레이아웃 내부 뷰는 findViewById를 통..

[Android/Kotlin] 문자열을 이용한 Resource 지정

코틀린 코드에서 일반적으로 resource를 id를 통해 지정한다. 예를들어 텍스트뷰의 배경을 setBackgroundResource로 지정할 때 아래 코드와 같이 지정한다. textView.setBackgroundResource(R.drawable.drawable_0) textView.setBackgroundResource(R.drawable.drawable_1) textView.setBackgroundResource(R.drawable.drawable_2) textView.setBackgroundResource(R.drawable.drawable_3) textView.setBackgroundResource(R.drawable.drawable_4) textView.setBackgroundResource..

[Android/Kotlin/패스트캠퍼스] 저작권 무료 이미지 검색기

제작 어플 : 저작권 무료 이미지 검색기 제작기간 : 2022.03.05 ~ 2022.03.06 수강 영상 패스트캠퍼스 - 30개 프로젝트로 배우는 Android 앱 개발 with Kotlin 초격차 패키지 Online. [Part4 Chapter07] 30개 프로젝트로 배우는 Android 앱 개발 with Kotlin 초격차 패키지 Online. | 패스트캠퍼스 (fastcampus.co.kr) 30개 프로젝트로 배우는 Android 앱 개발 with Kotlin 초격차 패키지 Online. | 패스트캠퍼스 30가지 실무 밀착 프로젝트로 실제 기업에서 쓰이는 50여 가지 필수 기술 스택을 한 번에 다 마스터하세요! 더 나아가, 여러 스택을 조합하여 실제 앱 기능을 구현하고 배포까지 배우는 심화 학습 ..

[Android/Kotlin/패스트캠퍼스] 실시간 미세먼지 확인 어플

제작 어플 : 실시간 미세먼지 확인 어플 제작기간 : 2022.03.03 ~ 2022.03.04 수강 영상 패스트캠퍼스 - 30개 프로젝트로 배우는 Android 앱 개발 with Kotlin 초격차 패키지 Online. [Part4 Chapter06] 30개 프로젝트로 배우는 Android 앱 개발 with Kotlin 초격차 패키지 Online. | 패스트캠퍼스 (fastcampus.co.kr) 30개 프로젝트로 배우는 Android 앱 개발 with Kotlin 초격차 패키지 Online. | 패스트캠퍼스 30가지 실무 밀착 프로젝트로 실제 기업에서 쓰이는 50여 가지 필수 기술 스택을 한 번에 다 마스터하세요! 더 나아가, 여러 스택을 조합하여 실제 앱 기능을 구현하고 배포까지 배우는 심화 학습 ..

[Android/Kotlin] Navigation Safe Args 에러 해결

프레그먼트 이동 및 데이터 전달을 하기 위해 navigation safe arg 라이브러리를 사용하면서 에러가 발생하였다. 발생 오류 Class 'ActionGlobalNavigationPost' is not abstract and does not implement abstract member public abstract fun getActionId(): Int defined in androidx.navigation.NavDirections 'actionId' overrides nothing 'arguments' overrides nothing 앱 실행결과로 위와 같은 에러 메시지가 출력되며 앱이 실행이 되지 않았다. 문제 원인 프로젝트 수준의 build.gradle과 앱/모듈 수준의 build.grad..

[Android/Kotlin/해결 ...?] 리사이클러뷰 mvvm 적용 관련 삽질

레포지토리 코드 class LeagueDateRepository { val _leagueDateArray = MutableLiveData() fun initRepository(array: List) { _leagueDateArray.value = array if (_leagueDateArray.value!!.size > 0) _leagueDateArray.value!![0].isSelected = true } fun dateClickCallback(oldPosition: Int, newPosition: Int) { if (oldPosition == newPosition) _leagueDateArray.value!![newPosition].isSelected = true else { _leagueDateA..

반응형