티스토리 뷰
728x90
1. ViewModel에 의존성이 필요한 경우 Factory 클래스를 생성하여 hilt로 생성한다. 하지만 아래처럼 바로 ViewModel에 @HiltViewModel을 사용하고
@HiltViewModel
class MainViewModel @Inject constructor(
private val app: Application,
private val schoolRepository: SchoolRepository
): ViewModel() {
private val _searchAppBarState: MutableState<SearchAppBarState> =
mutableStateOf(SearchAppBarState.CLOSED)
val searchAppBarState: State<SearchAppBarState> = _searchAppBarState
private val _searchTextState: MutableState<String> = mutableStateOf("")
val searchTextState: State<String> = _searchTextState
fun updateSearchAppBarState(newValue: SearchAppBarState) {
_searchAppBarState.value = newValue
Log.i("PHILIP", "searchAppState to ${_searchAppBarState.value}")
}
fun updateSearchTextState(newText: String) {
_searchTextState.value = newText
Log.i("PHILIP", "updateSearchTextState to ${_searchTextState.value}")
}
2. 아래처럼 Activity에서 아채처럼 viewModels로 생성하면 Factory 없이도 생성이 가능하다. 물론 특정한 디폴드 값이 필요한 경우에는 사용할 수 없지만 컴포넌트를 주입받아서 사용하는 일반적인 경우에는 정상적으로 동작한다.
@AndroidEntryPoint
class MainActivity : ComponentActivity() {
// @Inject
// lateinit var factory: MainViewModelFactory
private val viewModel: MainViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
3. viewModels은 factory가 인자로 주어지지 않는 경우 바로 아래 코드처럼 디폴트 factory를 기본적인 설정을 사용하는데 알아서 잘 만들어낸다. 스코프만 잘 적어주면 사용하는데 문제가 없어 보인다.
if (mDefaultFactory == null) {
mDefaultFactory = new SavedStateViewModelFactory(
getApplication(),
this,
getIntent() != null ? getIntent().getExtras() : null);
}
728x90
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
- 도커 개발환경 참고
- AWS ARN 구조
- Immuability에 관한 설명
- 자바스크립트 멀티 비동기 함수 호출 참고
- WSDL 참고
- SOAP 컨슈머 참고
- MySql dump 사용법
- AWS Lambda with Addon
- NFC 드라이버 linux 설치
- electron IPC
- mifare classic 강의
- go module 관련 상세한 정보
- C 메모리 찍어보기
- C++ Addon 마이그레이션
- JAX WS Header 관련 stackoverflow
- SOAP Custom Header 설정 참고
- SOAP Custom Header
- SOAP BindingProvider
- dispatcher 사용하여 설정
- vagrant kvm으로 사용하기
- git fork, pull request to the …
- vagrant libvirt bridge network
- python, js의 async, await의 차이
- go JSON struct 생성
- Netflix Kinesis 활용 분석
- docker credential problem
- private subnet에서 outbound IP 확…
- 안드로이드 coroutine
- kotlin with, apply, also 등
- 안드로이드 초기로딩이 안되는 경우
- navigation 데이터 보내기
- 레이스 컨디션 navController
- raylib
TAG
- jsp
- 설정
- hibernate
- Many-To-Many
- 하이버네이트
- login
- Spring
- one-to-many
- 설정하기
- Rest
- form
- 자바
- Angular
- 상속
- Validation
- spring boot
- 외부파일
- WebMvc
- 스프링부트
- RestTemplate
- one-to-one
- Security
- mapping
- Spring Security
- crud
- 로그인
- 매핑
- 스프링
- MYSQL
- XML
250x250