Programming
no such method error
카메라가 안켜지는 버그 발생 -> 아래와 같은 문구가 뜬다. java.lang.NoSuchMethodError: No static method getOrCreate Instance 그냥 Gradle 버전을 업데이트 해주라는 말이다. (참고 Stack overflow ) (바로가기)
Migrate & Gradle
앱 개발을 하다보면 매번 gradle 버전 관리가 발목을 잡는다. androidx 로 써야 하니 android.support 예전 버전을 쓰라하니 가지 각색이다. migrate하기에도 무섭다 이젠 무엇이 충돌날지 예측할 수가 없어서 꼼꼼히 보지만 또 시간이 지나면 잊혀지기 때문에 매번 찾아보기 귀찮아서 기록을 남긴다. #1 aar, jar 파일을 라이브러리로 직접 넣은 경우 이것을 gradle에 implementation(구현) 하는 방법 -> 가이드가 있다(바로가기) -> 아래와 같은 방식으로 넣으면 된다고 한다. (직접 해보니 sync now 도 통과 잘 되더라) 극혐 implementation fileTree(dir: 'libs', include: ['*.jar']) #2 거지같은 jcenter()..
Fxxking Deprecated List
onActivityResult Deprecated -> Fragment에서 사용법 (참고 블로그) (참고 블로그)
Button - ViewBinding
Fragment에서 ViewBinding을 활용한 상태에서 여러개의 버튼이나 TextView에 반복되는 값을 부여하는 경우가 있었다. 물론, viewbinding말고 다른 방법이나 더 현명한 방법이 있을 듯 하다. 현재까지 내가 찾고 도움을 받은 코드를 적어보겠다. 일단, 상황은 버튼을 클릭한 경우 같은 layout 안에 있는 다른 버튼들의 ui가 음영처리가 되게 하고 싶었다. viewbinding을 통해 버튼을 불러오고, 해당 색상을 kotlin 코드로 변경해주는 것은 알았지만, onclick이벤트가 발생했을 때 다른 버튼이 자동으로 음영처리되게 하는 직관적인 방법이 필요했다. 이전에는 일일히 if문을 통해 다른 버튼의 색상을 바꿔주는 함수를 만들어서 사용했었다. 이번에는 이러한 기능을 좀 더 짧고 간..
Fragment에서 뒤로 가기 ?
Fragment 에서 뒤로가기를 누른것이 Activity에서의 방법과는 차이가 있었다. 일단, callback을 통해서 진행했어야 했는데, 좀 더 정확하게 알아볼 필요가 있어보이지만, 일단은 activity에서 컨트롤하는 것으로 생각하고 있다. 다음은 내가 찾아본 코드이다. /* 프래그먼트 뒤로가기 버튼 컨트롤 방안 : callback함수를 활용하는 것이다. 그러나, activity 에서 충분히 컨트롤이 가능한 것 같다.*/ private lateinit var backPressCallBack : OnBackPressedCallback // 상단에 선언해준다. override fun onAttach(context: Context) { // 화면이 이동은 안되지만, 값은 변동할 수 있다. super.onA..
res/layout 나누기
먼저 이 스택플로우의 글을 천천히 읽고 따라해보자. [바로보기] 영어라 귀찮다 되나 진짜 ? 싶으면 아래를 보자. 1. 스택의 글 처럼 먼저 과감하게 layout에 있는 모든 xml파일들을 복사해서 바탕화면에 둔다. 2. 그리고 과감히! layout폴더를 삭제. 3. 자이제 쫄지말고, res 우클릭 후 Directory를 눌러 새로 하나 만들어준다. layouts (자기가 원하는 형태로) 4. layouts(나의 예시) 디렉토리에서 다시 우클릭 후 내가 구분하고 싶은 폴더 명들을 만들어본다. layouts/home , layouts/login , layouts/setting 등등 원하는 폴더 구조를 다 만든다. 5. 이제 각 각 만든 디렉토리에서 또 layout 이라는 명칭으로 디렉토리를 추가해준다. (..
Coroutines in Kotlin
Coroutines 코루틴 목적 : 비동기로 실행되는 코드를 간소화 병행 실행 설계 패턴 역사 : 코틀린 1.3버전에서 추가 됨. 기능: 경량화 : 실행 중인 스레드를 차단하지 않는다. (정지) 따라서 단일 스레드에서 많은 코루틴을 실행시킬 수 있다. 정지라는 기능은 많은 병렬작업을 지원하면서 차단보다 메모리를 절약한다. 메모리 손실 감소 : 구조화된 병행 실행을 사용하여 범위 내에서 작업을 실행할 수 있다. 취소기능 기본 지원 : 실행 중인 코루틴 계층 구조를 통해 자동으로 취소가 전달된다. Jetpack에 통합 ? VM 아키텍처 구성요소는 기본 스레드의 repo레이어를 호출하여 네트워크(retrofit)요청을 트리거한다. 이러한 아키텍처에서 코루틴을 사용하여 다양항 솔루션을 반복하여 기본 스레드를 차..
Frag with Animation
Fragment to Fragment with animation 프래그먼트에서 프래그먼트로 이동하는 순간의 애니메이션 효과를 적용해줄 수 있다. 이 방법은 매우 유용하고 앱에서 깔끔한 흐름 처리를 해주는 듯 하다. 요즘 앱에서는 이러한 효과를 심심치 않게 많이 확인 할 수 있다. 지금까지 내가 알게된 방법에 대해 기록해보겠다. 먼저 공식 문서를 확인해보자. [보러가기] 사용방법 val fragment = FragmentB() supportFragmentManager.commit { setCustomAnimations( R.anim.slide_in, R.anim.fade_out, R.anim.fade_in, R.anim.slide_out ) replace(R.id.fragment_container, fra..