проблема связана с тем, что вы вручную создаете экземпляр MainActivity
при создании MyObject
в своем модуле. поскольку он создается вручную, он не управляется платформой и, следовательно, не проходит ожидаемый жизненный цикл (например, onCreate()
, onStart()
, onResume()
и т. д.).
(примечание: никогда не делайте этого в рабочем коде).
, поскольку onCreate()
никогда не запускается для этого экземпляра, созданного вручную, компоновка для этого экземпляра не завышена, поэтому MyObject
ссылается на Activity
(как реализацию MyCallBack
), который не знает о любой View
с.
если вы хотите включить действительный управляемый фреймворком экземпляр MyActivity
в свой граф объектов, одним из решений будет добавление его в качестве обязательного параметра конструктора в ваш модуль, например:
@Module
class MyModule(private val myCallBack: MyCallBack) {
@Provides
fun providesMyObject(): MyObject = MyObject(myCallBack)
}
... затем в MainActivity
создайте компонент и выполните самоинжекцию следующим образом:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main2)
mytextview.text = "first change"
DaggerMyComponent.builder()
.myModule(MyModule(this))
.build()
.inject(this)
}
надеюсь, что это поможет прояснить ситуацию!