Android/JETPACK

    [JETPACK개론] Fragment LiveData / LifeCycleOwner

    [JETPACK개론] Fragment LiveData / LifeCycleOwner

    프래그먼트에서 LiveData를 사용하기 전에 프래그먼트의 View가 종료되는 시점을 LifeCycle을 통해 알아보자! Fragment Class 두 개를 준비하자! binding.btn1.setOnClickListener { val transaction = manager.beginTransaction() val fragment = BlankFragment1() transaction.replace(R.id.frameArea, fragment) transaction.addToBackStack(null) transaction.commit() } binding.btn2.setOnClickListener { val transaction = manager.beginTransaction() val fragment..

    [JETPACK개론] LiveData 와 MutableLiveData

    전 글에서 MutableLiveData를 사용해서 간단한 실습을 해보았다. 사용해봤던 MutableLiveData와 LiveData의 차이는 무엇일까? 결론부터 말하자면 LiveData는 변경될 수 없고, MutableLiveData는 변경될 수 있다. 바로 실습을 통해서 이에 대해서 구체적으로 알아보자! 그 전의 게시물에 사용했던 코드의 액티비티 클래스에서 직접 다음과 같이 MutableLiveData의 값을 변경해보자. viewModel.testMutableLiveData.value = 10 MutableLiveData는 이런식으로 ViewModel클래스 이외에 Activity클래스에서도 변경이 가능하다. 하지만!! 이럼 우리가 ViewModel클래스를 만들어준 의미가 없어지고, 뷰모델에서만 변경하려..

    [JETPACK개론] LiveData

    [JETPACK개론] LiveData

    LiveData? LiveData는 관찰 가능한 데이터 홀더 클래스이다. 관찰 가능한 일반 클래스와 달리 LiveData는 수명주기를 인식한다. 이렇게 공식문서에 정의되어있다. 즉, 쉽게 다시 설명하자면 데이터를 LiveCycle과 결합해서 관찰해줄 수 있는 것이 LiveData이다!! 가장 대표적인 장점 중에 하나가 UI와 데이터 상태의 일치를 보장해준다! LiveData는 기본 데이터가 변경될 때 observer 객체에 알리고, 코드를 통합하여 이러한 observer객체에 UI를 업데이트할 수 있다. 다음 예시를 살펴보자! class MainActivity : AppCompatActivity() { private var testMutableLiveData = MutableLiveData(0) ove..

    [JETPACK개론] ViewModelFactory

    ViewModelFactory 안드로이드 개발을 하면서 네트워크 통신을 하거나 localDB, room SQLite 등을 포함하여 데이터를 ViewModel로 넘겨주고 싶을 때 안드로이드 Factory클래스를 이용할 수 있다. 간단히 int형 숫자 하나를 전달하는 ViewModel을 만들어 테스트해보자. class MainViewModel(num : Int) : ViewModel() { init{ Log.d("MainViewModel" , num.toString()) } 숫자 하나를 받은 ViewModel 클래스이다. 이제 Factory클래스를 이용해 ViewModel에 원하는 파라메터를 넣어 생성하는 방법을 이용해보자! class MainViewModelFactory(private val num : I..

    [JETPACK개론] Activity/Fragment 의 ViewModel 공유

    [JETPACK개론] Activity/Fragment 의 ViewModel 공유

    전 글에서는 간단하게 Activity에서의 ViewModel 사용을 해보았다. 이번 글에서는 먼저 Fragment에서 ViewModel을 사용해보자! val transaction = manager.beginTransaction() val fragment = TestFragment() transaction.replace(R.id.frameArea, fragment) transaction.addToBackStack(null) transaction.commit() 먼저 fragment layout을 만들고, 위의 코드와 같이 액티비티에서 framlayout을 형성하여 fragment로 변환해준다. class TestFragmentViewModel : ViewModel() { var countValue = 0 ..