반응형

전체 글 30

Iterator java.util.NoSuchElementException

안녕하세요. 오늘은 Java에서 Iterator 사용시 NoSuchElementException이 발생하는 이유와 이에 대한 해결방법을 설명하도록 하겠습니다. 저의 경우는 Iterator를 사용할때 사용방법을 정확히 숙지하지 못하고 사용해서 발생한 에러 메시지입니다. Iterator는 Set, List, Map등 어떤 데이터들의 집합체(Collection)들로부터 정보를 얻어낼 수 있는 기능을 수행할 수 있습니다. 보통 이러한 자료구조들로부터 정보를 얻어낼때 for, while과 같은 반복문과 조건문들을 사용해서 특정 항목의 정보를 얻어내는데, Iterator를 사용하면 동일한 방식으로 접근이 가능하며, 그 안에 있는 특정 항목에 접근할 수 있는 방법을 손쉽게 제공합니다. Iterator에서 자주사용하는..

Development/Java 2022.03.13

Android Application 클래스가 호출되지 않는 경우

안녕하세요. 오늘은 내가 생성한 Application 클래스가 호출되지 않는 경우에 대해서 설명하겠습니다. 앱을 개발하다보면 여러가지 이유가 있겠지만 보통 전역으로 사용할 수 있도록 최상위의 Application 클래스를 상속받는 경우가 있습니다. 다음과 같이 Application을 상속받아서 사용합니다. 예제는 DataStore를 전역으로 사용하기 위해 작성한 코드입니다. import android.app.Application import android.util.Log import com.teamgr.sample.db.DataStoreManager class MyApplication : Application() { private lateinit var dataStore: DataStoreManager ..

Development/Android 2022.02.03

Android MVVM with Retrofit2

디자인패턴? MVVM? 안드로이드 및 어플리케이션 개발에서 디자인 패턴은 앱의 수정 및 유지보수를 용이하게 해주는 방법론이 있습니다. 앱을 개발할때, 구조에 대해서 신경을 쓰지않고 코드를 작성하게 된다면, 다음과 같은 문제사항이 생깁니다. 버그가 발생했을때 수정 해야하는 부분을 명확하게 알 수 없음. 버그가 발생했을때 문제가 발생한곳 외에 엉뚱한곳에서 사이드이펙트가 발생할 수 있음. 앱 특성상 수정사항이 빈번할 경우, 여러곳을 수정해야할 수 있음. (비용이 많이 발생) MVC, MVP, MVVM등 다양한 방법을 적용하여, View와 Controller, Model등을 분리하여 대응하기 편하게 고안된것이 디자인 패턴이라고 합니다. 디자인패턴의 장점? 디자인패턴은 다음과 같은 장점을 제공합니다. 디자인패턴을..

Development/Android 2022.01.30

Gson 라이브러리 사용하기

안녕하세요. 오늘은 안드로이드에서 json 데이터를 다룰때 사용하는 Gson에 대해서 설명하도록 하겠습니다. gson 라이브러리는? JSON 포멧의 데이터를 직렬화(Serialization), 역직렬화(Deserialization)할때 편리하게 사용할 수 있도록 google에서 개발한 JSON 데이터처리 라이브러리입니다. 우리는 주로 앱과 서버가 통신을 할때 JSON 혹은 XML을 데이터로 주고 받습니다. 이때 JSON 데이터를 받아서 모델 클래스에 주입할 수 있게 도와주는 역할을 합니다. GSON 없이 JSON 데이터를 파싱하려면 생각보다 많은 코드가 필요합니다. GSON을 이용하면 간편하게 몇 줄 안에 원하는 형태로 사용할 수 있게 도와줍니다. Gradle기준 GSON을 사용하려면 다음과 같이 라이브..

Development/Android 2022.01.25

Android Notification 만들기

안녕하세요. 오늘은 Android Notification을 만들어보는 예제를 소개합니다. 안드로이드 서비스에서는 현재 서비스가 동작중임을 나타내는 Notification을 띄워야합니다. 안드로이드 오레오 이상부터는 포어그라운드서비스 동작중에 Notification을 무조건 띄워야합니다. * https://developer.android.com/about/versions/oreo/android-8.0-changes?hl=ko NotificationBuilder를 사용해서 Android Service에서 Notification을 생성할 수 있습니다. 다음과 같은 처리를 하고 있는 소스코드를 작성해보겠습니다. * 액티비티 혹은 프레그먼트에서 서비스 실행 (+ 안드로이드 오레오 이상 예외처리) * 서비스에서 N..

Development/Android 2022.01.13

Android에서 설치된 특정 패키지 검색하기

안녕하세요. 이번 포스팅은 안드로이드 개발중에 내 앱이 아닌 설치된 다른 앱의 존재여부를 검사하는 작업을 할때 사용하는 유틸클래스를 소개하고자 합니다. 많은곳에서 사용할 수 있으므로 공용 클래스로 작성하여 사용하면 됩니다. 사용하기전에 AndroidManifest.xml에 다음과 같이 작성해주셔야 됩니다. if (utils.isPackageInstalled("com.other.packgename", packageManager)) { Log.d(TAG, "checkPackgeName: return true") return true } } Log.w(TAG, "checkPackgeName: return false") return false } 감사합니다. 참고한 사이트 * https://stackoverfl..

Development/Android 2022.01.12

Material Design 3

https://m3.material.io/ Material Design Build beautiful, usable products faster. Material Design is an adaptable system—backed by open-source code—that helps teams build high quality digital experiences. m3.material.io Android12에서 사용하기 위한 Material Design3가 공개되었습니다. 기존 Android11에서 사용된 Material Design2 (https://material.io/)에서 보다 좀 더 이쁘게 업데이트되었는데요, 갤럭시 휴대폰 기준 Android12를 사용할때, Gmail이나 Google Play등에..

Development/Android 2021.12.03

안드로이드 액션바 제거하기

안드로이드 개발시에 AppCompatActivity를 상속받는 Activity를 MainActivity로 사용할경우 앱바(Appbar) 혹은 액션바(ActionBar)가 액티비티 상단에 기본적으로 나타나게 되어있다. 화면기획에 따라 ActionBar를 제거해야하는 일이 있는데 다음과 같은 방법으로 제거가 가능하다. 1. android:theme에서 제거하기 android:theme에서 제거하기위해서는 현재 manifest에서 application의 속성에 사용중인 theme를 확인한다. 위의 manifest.xml 파일에서 android:theme에 Theme.AndroidSettingsSample에 따라가보면 다음과 같이 resource xml 파일이 있다. 위의 xml 코드에서 style name 속..

Development/Android 2021.11.08

Android BottomNavigationView 텍스트 라벨처리

안드로이드 개발시 하단의 메뉴구성을 위해 자주 사용되는 BottomNavigationView를 처리할때 아이콘 아래의 텍스트 라벨을 기획에 맞게 변경하고자 합니다. 위의 그림에서 5번에 해당되는 Text Label이 변경하고자 하는 속성값입니다. 이때 BottomNavigationView가 구현되어 있는 XML에 가서 labelVisibilityMode의 속성값을 변경해주면 됩니다. 위의 XML에서 app:labelVisibilityMode는 다음과 같이 속성값을 제공합니다. auto 항목이 3개 이하일경우 labeled로 작동, 4개일경우 selected로 작동 labeled 텍스트라벨이 항상 보여진다. selected 텍스트라벨이 선택되었을떄만 보여진다. unlabeled 텍스트라벨이 보여지지 않는다..

Development/Android 2021.10.04

안드로이드 현재시간 가져오기 (DateUtils)

안드로이드 개발중에 현재시간을 뷰에 표시하는 기능을 구현하기로 했다. 뷰에 표시되는 형태는 "2021년 9월 15일"의 형태로 년, 월, 일을 한글과 함께 표시해야한다. Kotlin으로 개발중이고해서 최대한 Kotlin 스럽게(?) 구현해보고자 한다. OS의 현재시간을 불러와서 사용할것이고, 많은 부분에서 사용할것이라서 공용모듈로 구성하였다. 우선 정상적으로 작동하는지 보기 위해 JUnit을 활용하여 테스트코드를 작성하였다. val currentTime: Date = Calender.getInstance().time 이렇게만 구성할경우 현재시각은 얻어오지만 원하는 형태로 구성되지 않는다. 그리하여 몇가지 코드를 추가해주었다. fun getCurrentDate(): String { val currentDa..

Development/Android 2021.09.15
반응형