저는 Scala를 사용하여 Android 용 게임을 작성하고 있습니다. 이제 Dick Wall의 새로운 Dependency Injection 프레임 워크 인 SubCut을 Android에서 작동 시키려고합니다.Android에서 SubCut (Scala DI) 사용
기본적으로 게임의 유일한 활동이며 응용 프로그램이 시작될 때 Android에 의해 자동으로 시작되는 android.app.Activity
확장 클래스가 있습니다. 이제는이 Activity 인스턴스가 SubCut에 의해 주입되도록해야합니다.
는 일반적으로 당신처럼 수행
implicit val bindingModule = ProjectConfiguration
val topInstance = new DoStuffOnTheWeb("stuff", new Date())
또는
val topInstance = new DoStuffOnTheWeb("stuff", new Date())(ProjectConfiguration)
하지만 문제는 활동이없는 내 코드에서, 안드로이드에 의해 인스턴스화되고있는 것입니다. 나는이 같은 것을 사용하여 시도 :
class MyGame()(val bindingModule:BindingModule = MyGameConfigurationModule) extends Activity with Injectable {
을하지만 분명히 안드로이드로 이것을 인스턴스화하는 방법을 알고하지 않습니다 내가 지금 얻을 :
ERROR/AndroidRuntime(322): FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.mycompany.android.mygame.....
나는 "부트 스트랩"할 수있을 것이라는 생각을했다 RoboGuice가 Guice DI 프레임 워크에서 수행하는 것처럼 액티비티의 onCreate() 메서드에서 SubCut을 수행합니다 (해당 메서드에서 인젝터 인스턴스를 생성하고 매개 변수로 this
을 전달 함)
다른 옵션은 자동 별 Activity를 수동으로 시작하고 Subcut에서 요구하는 암시 적 val을 사용하여 android.app.Application
에서 수동으로 시작하십시오. 그러나 어쨌든 이것은 문제를 요구하는 것 같이 느껴집니다. (예, 저는 안드로이드 개발에 아주 새로운 것입니다.)
아이디어가 있으십니까?
간단하고 아름답게 작동합니다. 감사합니다. – vertti