为什么在 Android 上使用 Dagger2 时不显示数据
Why not show data when use Dagger2 on Android
在我的应用程序中,我想使用 Dagger2,并且我只想显示来自服务器的一张图像,而我使用的是 Picasso。
我写了下面的代码,但是在 运行 应用程序之后没有向我显示任何图像到 imageview
!
对于 android,我使用 Kotlin 语言。
申请class:
class App : Application() {
var component: AppComponent? = null
override fun onCreate() {
super.onCreate()
//Init dagger component
component = DaggerAppComponent.builder().modulePicasso(ModulePicasso(this)).build()
}
fun getAppComponent(): AppComponent? {
return component
}
}
Activity class :
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
App().getAppComponent()?.getPicasso()?.load("https://cdn01.zoomit.ir/2017/6/5f0e97c1-9eb7-4176-aa02-35252489ede8.jpg")
?.into(imageView)
}
}
我该如何解决?
我认为这是因为您正在创建应用程序的新实例 class,例如。 App()
然后调用 getAppComponent()
肯定 returns null
,因为你应该 而不是 自己构建应用程序实例,而是访问引用它的静态 属性。
要修复它,您需要将静态 属性 (instance
) 添加到 App
class 并使用 AppComponent
属性.
在我的应用程序中,我想使用 Dagger2,并且我只想显示来自服务器的一张图像,而我使用的是 Picasso。
我写了下面的代码,但是在 运行 应用程序之后没有向我显示任何图像到 imageview
!
对于 android,我使用 Kotlin 语言。
申请class:
class App : Application() {
var component: AppComponent? = null
override fun onCreate() {
super.onCreate()
//Init dagger component
component = DaggerAppComponent.builder().modulePicasso(ModulePicasso(this)).build()
}
fun getAppComponent(): AppComponent? {
return component
}
}
Activity class :
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
App().getAppComponent()?.getPicasso()?.load("https://cdn01.zoomit.ir/2017/6/5f0e97c1-9eb7-4176-aa02-35252489ede8.jpg")
?.into(imageView)
}
}
我该如何解决?
我认为这是因为您正在创建应用程序的新实例 class,例如。 App()
然后调用 getAppComponent()
肯定 returns null
,因为你应该 而不是 自己构建应用程序实例,而是访问引用它的静态 属性。
要修复它,您需要将静态 属性 (instance
) 添加到 App
class 并使用 AppComponent
属性.