Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- factory method
- 팩토리 메소드
- builderPattern
- F
- Functional Programming
- Singleton
- Kotlin
- 디자인패턴 #
- ㅓ
- 함수형프로그래밍
- Abstract Factory
- Design Pattern
- 코틀린
- PrototypePattern
- a
- 추상팩토리패턴
- r
- 추상 팩토리
- 옵저버 패턴
- 싱글톤
- 빌터패턴
- designPattern
- 프로토타입 패턴
- Observer Pattern
- El
- ㅋㅁ
- 디자인패턴
Archives
- Today
- Total
오늘도 더 나은 코드를 작성하였습니까?
ViewModel - Activity/Fragment 연결하기. 본문
1. Activity, Fragment 각자 뷰모델을 생성하는 경우
Activity
class MainActivity : AppCompatActivity() {
private lateinit var mBinding: ActivityMainBinding
private lateinit var mViewModel: NotesViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_main)
mViewModel = ViewModelProvider(this).get(NotesViewModel::class.java)
mBinding.viewModel = mViewModel
}
}
mViewModel = ViewModelProvider(this).get(NotesViewModel::class.java)
- context와 viewModel 클래스를 매개변수로 생성하여 참조한다.
Fragment
동일하게 ViewModelProvider(context).get(viewModel::class.java)를 사용하면되지만,
제공해주는 context가 requireActivity()를 통한 부모 activity의 context를 넣어줘야 동일한 viewModel을 제공받을 수 있다.
* viewModel ktx로 연결하기
class MainActivity : AppCompatActivity() {
private lateinit var mBinding: ActivityMainBinding
private val mViewModel: NotesViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_main)
mBinding.viewModel = mViewModel
}
}
**Android KTX
Android Jetpack과 기타 Android 라이브러리에 포함된 Kotlin 확장 프로그램 세트입니다.
KTX 확장 프로그램은 간결하고 직관적인 Kotlin을 Jetpack, Android 플랫폼, 기타 API에 제공합니다.
2. ViewModel 공유하기.
Android KTX(viewModel KTX) 사용시 by activityViewModels() 이용한 지연 초기화로
Activity에 참조한 ViewModel과 같은 참조를 받을 수 있고, ViewModelProvider를 통한 생성성은 context에 따라 설정 할 수 있다.
3. childFragment에서 동일한 viewModel 참조하기
'Android Jetpack Architecture > ViewModel' 카테고리의 다른 글
UI 이벤트 처리하기 (0) | 2022.12.01 |
---|---|
ViewModel 사용시 주의해야 할 점. (0) | 2020.08.21 |
ViewModel로 Loader 대체 하기 (0) | 2020.08.21 |
ViewModel (Fragment간 데이터 공유 및 통신하기) (0) | 2020.08.21 |
ViewModel (생명주기) (0) | 2020.08.20 |