为什么在 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 属性.