Android(98)
-
[Android/Error]onError: retrofit2.adapter.rxjava3.HttpException: HTTP 404 Not Found
RxJava3와 Retrofit2을 이용하여 로또 당첨 번호를 조회하는 도중 해당 오류를 만났다. 404 오류는 주소가 틀렸을 때 나타나는 오류이다. 1. retrofit init은 다음과 같다. init { val retrofit = Retrofit.Builder() .baseUrl("https://www.dhlottery.co.kr/common.do/") .client(OkHttpClient()) .addCallAdapterFactory(RxJava3CallAdapterFactory.create()) // 받은 응답을 observable 형태로 변환 .addConverterFactory(GsonConverterFactory.create()) .build() api = retrofit.create(Lo..
2023.02.25 -
[Android/Error]java.lang.NumberFormatException: Expected an int but was 106112471000
위와 연결하여 로또 당첨번호를 받아오는 도중 다음과 같은 에러를 만났다. 느낌에 106112471000를 포맷화할 수 없어 생긴 오류 같았다. 106112471000는 해당 로또 회차의 총 판매금액이었고, 이걸 나는 Int로 받아오고 있었다. 받아오는 변수 타입을 Long으로 바꿔주면 된다. long 최대값 : 9,223,372,036,854,775,807 int 최대값 : 2,147,483,647
2023.02.24 -
[Android/Gradle]Gradle에서 APK 생성 타입 설정하기
Gradle에서 APK 생성 타입 설정하기 회사에서 apk를 추출하는데 자동으로 이름이 생성이 되고, 직접 폴더를 만들어 그 폴더에도 저장이 된다. gradle에 해당 코드가 있었고, 찾아보니 gradle을 통해 설정할 수 있는 기능이었다. 1. apk 생성 시 빌드타입, 날짜, 버전명 자동 기입 build.gradle (:app) android { ... buildTypes { ... applicationVariants.all { variant -> variant.outputs.all { def name = parent.project.getName() def buildType = variant.buildType.name def versionName = variant.versionName outputFi..
2023.02.24 -
[Android/Basic]BaseActivity
BaseActivity란? 여러 Activity를 사용할 때 중복되는 코드를 미리 정의하여 필요한 코드만 구현하도록 사용하는 기본 액티비티 T: ViewDataBinding , R: BaseViewModel => 코드의 중복을 줄이고 가독성 강화 AppCompatActivity란? setSupportActionBar(Toolbar) API를 사용하여 action item, navigation mode 등을 포함하는 action bar를 지원 Theme.AppCompat.DayNight 테마를 사용하며 AppCompatDelegate.setDefaultNightMode(int) API를 사용하여 다크 모드를 지원 getDrawerToggleDelegate() API를 사용하여 DrawerLayout과 통합
2023.02.24 -
[Android/Jetpack]ViewModel + Databinding + LiveData
구현을 위한 이전글 [프로그래밍]MVVM 패턴 MVVM패턴이란? View - ViewModel - Model View: 사용자에게 보이는 화면 ViewModel: View를 표현하기 위해 만든 View를 위한 Model && View를 나타내주기 위한 데이터 처리 담당 Model: 어플에서 사용되는 데이터 및 anovice-dp.tistory.com [Android/Jetpack]Databinding 사용하기 (1) 기본 세팅 build.gradle (java는 아래 코드만 추가) android { ... dataBinding { enabled = true } ... } build.gradle (kotlin의 경우, 아래 코드도 추가) apply plugin: 'kotlin-kapt' ... depend..
2023.02.24 -
[Android/Jetpack]LiveData
LiveData란? 식별 가능한 데이터 홀더 클래스. 스스로 수명주기를 인식함 Data의 변경을 관찰할 수 있는 Data Holder 클래스 UI와 데이터 상태의 일치 보장 메모리 누출이 없음 비정상 종료가 없음 수명주기를 자동으로 관리 최신의 데이터 유지 기기회전 등 프래그먼트나 액티비티가 재생성되어도 데이터의 변화가 없음 ViewModel과 함께해야 효과가 커짐 ViewModel 안에 있는 LiveData 객체를 DataBinding을 통해 UI에서 관찰만 할 수 있도록 만들면 액티비티나 프래그먼트에서 일일히 데이터를 갱신할 필요 없이 알아서 UI에 최신 데이터가 보이게 될 것 Observable과 다르게 LifeCycle을 알고있음 → 활성(active:STARTED/RESUMED)상태일 때만 데이..
2023.02.24