我正在爲Scala編寫Android遊戲。現在我試圖讓Dick Wall的新的依賴注入框架SubCut在Android上工作。Android上使用SubCut(Scala DI)
基本上我有一個類延伸android.app.Activity
,這是遊戲的唯一活動,並在應用程序啓動時由Android自動啓動。現在我需要讓這個Activity實例被SubCut注入。
通常你不喜歡它:
implicit val bindingModule = ProjectConfiguration
val topInstance = new DoStuffOnTheWeb("stuff", new Date())
或
val topInstance = new DoStuffOnTheWeb("stuff", new Date())(ProjectConfiguration)
但問題是,該活動由Android實例化,而不是從我的代碼。我試圖用這樣的:
class MyGame()(val bindingModule:BindingModule = MyGameConfigurationModule) extends Activity with Injectable {
但顯然Android不知道如何實例化這個,因爲我現在得到:
ERROR/AndroidRuntime(322): FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.mycompany.android.mygame.....
我在想,是否有可能「引導」在活動的onCreate()方法在某種程度上SubCut,作爲RoboGuice與吉斯DI框架做(它在方法創建一個噴油器實例,並將它this
作爲參數。
我想到了其他的選擇是,如果我可以跳過自動星並使用Subcut所需的隱式val從android.app.Application
中手動啓動它。但不知何故,這感覺就像要求麻煩(是的,我對android開發很陌生)。
任何想法?
簡單,工作得很漂亮,謝謝! – vertti