ViewModel을 이용한 Fragment간 데이터 전달

Jungmin Lee·2021년 1월 2일
2

Android

목록 보기
4/7
post-thumbnail

들어가며

activity간 데이터전달은 intent를 이용해 많이 구현한다. 하지만 fragment간에 데이터를 교환하며 전환을 하거나 화면회전을 하더라도(안드로이드는 보통 화면을 가로 세로로 전환하면 기존 화면에 나오던 데이터 들이 싹 날라간다ㅜㅜㅜㅜ) 이용하기 위해 ViewModel을 이용해보려 한다. 다음에는 navigaion의 argument기능을 이용할 것이다..!

ViewModel의 수명주기

ViewModel 만들기

나는 회원가입에 필요한 데이터 저장을 위해 SignUpViewModel을 만들었다

class SignUpViewModel: ViewModel(){
    var preferences=mutableListOf<String>()
    var userId=""
    var password=""
    var email=""
    var username=""
    var phoneNum=""
}

Fragment에서 ViewModel 사용하기

fragment에서 이미 만들어둔 ViewModel을 사용할 때는 by를 이용하지만 바로 불러올 경우 해당 fragment의 수명과 동일하므로 Activity의 수명과 동일하도록 activityViewModels()과 같은 형태로 불러온다.

class ChoosePreferFragment : Fragment() {
    
    val signUpViewModel by activityViewModels<SignUpViewModel>()



    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {


        signUpViewModel.preferences...
            
    }
}

developers 공식문서를 참고하여 작성하였습니다.

profile
금융 도메인과 개발 지식을 함께 쌓아가는 주니어 개발자입니다😊

0개의 댓글