inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

모던 안드로이드 - 코틀린과 Jetpack 활용

ViewModel에 주입

의존성 주입 관련 질문있습니다.

325

Yeongwoo Jang

작성한 질문수 4

1

의존성 주입을 사용하는 이유가 객체 안에서 객체생성을 피하고자 하기 때문이다 라고 하셨고 그래서 ViewModel에서는 

@Inject constructor()

를 통해 생성자에 객체를 받아주셨는데 

 Fragment나 Activity에서는 기본생성자만 허용하는 걸로 알고있었는데 혹시나해서

@Inject Constructor()를 사용해봤는데 역시나 안되더라구요  제가 생각한 이유 때문에 안되는 것이 맞는지 궁금합니다!

그리고 그게 맞다면 어쩔수없이 액티비티나 프래그먼트 내에서는 객체를 하나 생성해서 주입을 받아야되나요?

마지막으로 제가 의존성주입 테스트를 하면서 

Car클래스를 만들고 

생성자에  @Inject constructor(name : String) 이렇게 넣어주고 뷰모델이나 액티비티,프래그먼트에서 받아보려했는데 

java.lang.String cannot be provided without an @Inject constuctor or an @Provides-annotated method 에러가 났습니다.  이렇게 매개변수가 있는 객체를 받으려면 다른 방식으로 접근해야하나요?

감사합니다

kotlin android jetpack

답변 1

0

오준석

Fragment나 Activity는 생성자를 통한 주입이 불가능합니다.

https://developer.android.com/training/dependency-injection/hilt-multi-module 마지막 예제처럼 필드에 @Inject 로 주입 가능합니다.

Car 클래스의 생성자에 주입되는 name: String 을 제공하는 모듈이 제대로 안 만들어진 것은 아닐까요?

https://developer.android.com/training/dependency-injection/hilt-android

잘 설정되었다면 액티비티, 프래그먼트의 필드에서 @Inject lateinit var car: Car  처럼 하면 될 겁니다.

Room_DB코틀린 버전에서 에러 나시는 분들

1

294

1

Room db kotlin 관련질문

0

282

2

Room db kotlin 강의중에서

0

420

3

공적 마스크 조회 앱 자바 버전 질문입니다.

0

388

1

RecyclerView Adapter에서 ViewModel 접근에 관하여 질문 드립니다.

0

1401

1

네비게이션 그래프

0

229

1

Repository에서 Error처리를 하고 싶은데 잘 모르겠습니다.

0

755

1

getAll을 직접부를 때 무한무프 질문있습니다.

0

209

1

라이브 데이터 + 데이터 바인딩 질문드립니다!

0

219

1

/?m=5000 에 대해서 질문드립니다.

0

228

2

@Inject lateinit var repository: MyRepository

0

285

1

이번편 강의의 3:52 부분까지 공부했는데 에러가 걸립니다

0

412

2

let이나 apply는 주로 어떤 상황에 사용하나요?

0

262

2

Call<StroeInfo> 를 StoreInfo로 바꾸는 부분 질문

0

240

1

Room DB 파일을 확인하고 싶어요.

0

2338

1

SavedStateHandle 앱 종료 시킨 후, 다시 열면 0으로 초기화 되어있습니다ㅠ

0

475

1

안녕하세요.

0

442

4

NullPointerException이 뜨는데 이것도 마스크 재고 API 중지 때문인가요

0

287

1

viewModel 질문 있습니다.

0

390

1

suspend

0

241

2

retrofit2에서 코루틴을 이용하는 이유가 무엇인가요?

1

272

2

UpdateItems 생성

0

147

1

질문있습니다.

1

233

3

질문있습니다!

0

268

1