Почему бы не показать данные при использовании Dagger2 на Android - PullRequest
0 голосов
/ 23 октября 2019

В моем приложении я хочу использовать Dagger2 , и я хочу показать только одно изображение с сервера, а для показа изображения я использовал Пикассо .
Я пишу ниже коды, но после запускаприложение не показывает мне изображения в imageview!
Для Android я использую Kotlin язык.

Класс приложения:

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
    }
}

Класс активности:

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)
    }
}

Как это исправить?

1 Ответ

0 голосов
/ 23 октября 2019

Я думаю, это потому, что вы создаете новый экземпляр вашего класса приложения, например. App(), а затем вызов getAppComponent(), который наверняка вернет null, так как не следует создавать самостоятельно, а вместо этого обращаться к статическому свойству, ссылающемуся на него.

Исправитьдля этого вам нужно добавить статическое свойство (instance) в класс App и получить AppComponent, используя это свойство.

...