마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Dagger2 사용 질문입니다.

0 추천
안녕하세요. 안드로이드에서 DI를 적용하는데 잘 안되는 부분이 있어서 도움을 받고 싶어서 글을 올립니다.

 

component, module, provide 까지 생성했습니다.

class testModule {

    @Provides @Singleton

    fun provideTestServer(): TestService {

        …..

    }

}

 

@Component(modules = arrayOf(

    TestModule::class

))

interface TestComponent {

    fun inject(mainActivity: MainActivity)

}

 

 

그리고 MainActivity onCreate 에서

DaggerImageComponent.builder()
        .build().inject(this)

를 호출 해줬습니다.

 

여기서 잘 안되는 부분이 나오는데요.

MainActivity 에서

@Inject

lateinit var testService: TestService

 를 하면 정상적으로 인스턴스가 주입이 되는데,

 

다른 파일에서

object TestObject {

    @Inject

    @JvmSynthetic // 이 annotation 을 빼면  static에는 inject를 할 수 없다는 에러가 발생해서 추가 하였습니다.

    lateinit var testService: TestService

    

    fun test() = testService.testfun()

}

or

@Singleton

class TestClass {

    @Inject

    lateinit var testService: TestService

    

    fun test() = testService.testfun()

}

를 하려고 하면 인스턴스가 주입이 안되는 것 같습니다.

실행하면 initialize 가 되지 않았다는 에러가 발생합니다.

 

계속 dagger2 구글링하고 샘플을 봐도 이유가 뭔지 모르겠습니다.
jju8521 (340 포인트) 님이 2017년 4월 16일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...