Dagger 2を使用して簡単なMVP Archtectureアプリケーションを作成しようとしています。このチュートリアルと同じ結果を達成したいと思いますが、Kotlinと同じです。ここまでは私のコードです。Dagger 2 + KotlinはPresenterをViewに挿入できません
プレゼンター:
class MainPresenter @Inject constructor(var view: IMainView): IMainPresenter{
override fun beginMessuring() {
view.toastMessage("Measuring started")
}
override fun stopMessuring() {
view.toastMessage("Measuring stopped")
}
}
ビュー:
class MainActivity : AppCompatActivity(), IMainView {
@Inject lateinit var presenter : MainPresenter
val component: IMainComponent by lazy {
DaggerIMainComponent
.builder()
.mainPresenterModule(MainPresenterModule(this))
.build()
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
component.inject(this)
presenter.beginMessuring()
}
override fun toastMessage(message: String) {
Toast.makeText(this, message, Toast.LENGTH_LONG).show()
}
}
ダガーモジュール:
ダガーコンポーネント:
@Component(modules = arrayOf(MainPresenterModule::class))
interface IMainComponent {
fun inject(mainView : IMainActivity)
}
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.maciej.spiritlvl/com.example.maciej.spiritlvl.View.MainActivity}: kotlin.UninitializedPropertyAccessException: lateinit property presenter has not been initialized
PS、私のGradle短剣の設定:
kapt 'com.google.dagger:dagger-compiler:2.9'
mplementation 'com.google.dagger:dagger:2.9'
EDIT:IMainViewからMAINVIEWへ 変更注入さプレゼンタータイプ
問題は、私はこれで始まるエラーを構築取得していますということです。
あなたの言いたことをやった。ビューでは、変更されたフィールドタイプをMainPresenterに置き換えましたが、まだkotlin.UninitailizedPropertyExceptionが表示されます。 – Maciek