MVVM

    [Android] MVVM ViewModel 오류 : Can't access ViewModels from detached fragment 해결방법!

    MVVM 패턴을 기반으로 프로젝트를 진행하던 중, 아래와 같은 오류가 발생하였습니다. JNI DETECTED ERROR IN APPLICATION: JNI FindClass called with pending exception java.lang.IllegalStateException: Can't access ViewModels from detached fragment Detached된 Fragment에서 ViewModel에 접근할 수 없다는 내용인데요... 무슨 뜻인지 해석했음에도 불구하고 몇 시간의 삽질을 해야만 했습니다..ㅎㅎ 곰곰이 생각해보니 Android Lifecycle을 조금만 생각해봤다면 금방 해결했을텐데 말이죠.. 😅 어떤 코드에서 오류가 발생하였는지 함께 살펴보겠습니다. 🎈 class M..

    [Android][1] MVVM패턴 Databinding 맛보기!

    * 본 내용은 스스로 학습한 내용을 정리한 게시글입니다. * 데이터바인딩(DataBinding)이란? 기존에는 레이아웃의 뷰를 참조하기 위해서는 아래와 같이 findViewById() 메서드를 사용하였다. val button: Button = findViewById(R.id.my_button) 하지만 이러한 방식은 같은 한 화면에는 여러 개의 뷰가 존재하는 액티비티 클래스에 동일한 메서드를 너무나도 많이 호출시키게 만들어 클린 코드에 적합하지 못하다고 판단하였다. 그래서 등장하게 된 것이 바로 데이터바인딩(DataBinding)이다. 데이터바인딩을 사용했을 때의 장점 1. findViewById를 연속적으로 사용할 필요 없이 binding 객체 하나만 있으면 뷰를 참조할 수 있다. 2. RecyclerV..

    [Android][어따세워] [1] Android MVVM 회원가입&로그인 - 파이어베이스를 사용하여 계정을 등록해보자!

    이번 시간에는 계속해서 '어따세워' 앱의 회원가입 및 로그인 기능을 구현해보자! 로그인 부분은 크게 2가지로, '파이어베이스를 통한 구글, 페이스북 로그인', '카카오 SDK를 사용한 카카오 간편 로그인 기능' 을 구현할 수 있다. (이 외에도 더 다양한 로그인 방법이 존재하지만, 프로젝트에서는 크게 2가지로 국한시킵니다.) 이 포스팅에서는 구글 로그인만 포스팅을 할 것이며, 다른 로그인 기능들은 추후 이어서 포스팅할 계획이다. 우선, 미리 디자인 해놓은 레이아웃 화면이다. 포토샵을 사용하여 버튼을 적절히 디자인하였고, 배경 GIF는 상업용 사이트에서 다운받았다. 제목과 부제목란은 임의로 디자인하였다. (추후 변경 예정) 디자인은 나름 만족한다. (❁´◡`❁) 이제 파이어베이스를 들어가서 회원가입에 필요..

    [Android][어따세워] 토이 프로젝트 주제 정하기

    계기 최근에 최고의 IT 서비스 기업인 네카라쿠배의 채용공고만 보아도 안드로이드 직군에서 MVVM, Coroutine, RxJava, Kotlin은 기본 및 우대사항으로 기재되어 있다. 이런 기술 스택을 보면서 안드로이드를 공부하며 '내가 배우고 있는 내용을 프로젝트와 접목'시켜 시너지를 높여보고 싶었고, 이론뿐만 아니라 실무적인 부분에서도 적용하고 싶은 마음이 커지게 되어 시작하게 되었다. 또한, 기업에서는 혼자 개발하는 것이 아닌, 여러 개발자끼리 '협업'을 할 텐데, 지금까지 1인 개발만 해온 스스로를 더욱 성장시켜주고 싶었다. 주제 아이디어 회의를 하며 떠올린 토픽은 '어따세워' 라는 주차 앱이다. 본인과 지인 모두 군대를 무사 전역하고 슬슬 운전을 시작하기 시작했는데, 초보운전이어서 그런 것인지..

    [Android][0] MVVM 패턴이란?

    * 본 내용은 스스로 학습한 내용을 정리한 게시글입니다. * 오늘부터 Android의 MVVM 패턴에 대하여 정리해보려고 한다. 이미 기존에 대략 공부를 해보긴 했지만, 지식이 너무 얇팍하고 부족함을 느껴 글로 정리해보려고 한다. MVVM 패턴을 사용해야 하는 이유 기존에 Android 앱을 개발하다보면 Activity 하나에 모든 기능을 쏟아붓고 방치해두다가, 며칠 지나서 수정할 일이 생겨 프로젝트를 열어보면 내가 작성한거지만 무슨 용도로 해놓은 메소드인지, 클래스인지 구분하기 어려울 정도로 체계적이지 않았다. 그러다보니 기능 추가 및 수정시 다시 소스코드를 분석해야 하므로 시간이 오래 소요되는 불필요한 상황이 만들어진다. 이런 코드를 흔히 스파게티 코드(spaghetti code)라고 부른다. (코드..