【发布时间】:2019-06-28 07:11:08
【问题描述】:
你好,我是 dagger 2 的新手。当我运行下面的代码时,我得到了:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window$Callback android.view.Window.getCallback()' on a null object reference
Unable to start activity ComponentInfo{com.ali.daggerplayground/com.ali.daggerplayground.main.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window$Callback android.view.Window.getCallback()' on a null object reference
当我不使用匕首时,这段代码运行良好。我不明白是什么让视图变为空。也许有人可以给我解释一下?
这是我的活动。
class MainActivity : BaseActivity(), MainContract.View {
@Inject
internal lateinit var mPresenter: MainContract.Presenter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
App.main.inject(this)
tv.text = "This Button"
mPresenter.attach(this)
mPresenter.getImage()
}
override fun onSuccess(message: String?) {
Log.i("MessageReturn", message)
tv.text = message
}
这是我的主持人:
class MainPresenter @Inject constructor(private val mView: MainContract.View) :
MainContract.Presenter {
override fun attach(view: MainContract.View) {
}
override fun getImage() {
mView.onSuccess("success")
}
这是我的模块:
@Module
class ModuleMain {
@Provides
@Singleton
fun provideMainPresenter(mainView: MainContract.View): MainContract.Presenter {
return MainPresenter(mainView)
}
@Provides
@Singleton
fun provideMainView(): MainContract.View {
return MainActivity()
}
这个组件:
@Singleton
@Component(modules = [ModuleMain::class, ModuleNetwork::class])
interface ComponentMain {
fun inject(mainActivity: MainActivity)
@Component.Builder
interface Builder {
@BindsInstance
fun application(application: Application): Builder
fun moduleNetwork(moduleNetwork: ModuleNetwork): Builder
fun build(): ComponentMain
}
【问题讨论】:
-
为什么你的
MainPresenter是单身人士,而MainView不是? -
我只是添加了@Singleton,但仍然崩溃。
标签: android retrofit2 dagger-2 android-mvp