Инициализируйте ImageView в сопутствующем объекте Kotlin

Я пытаюсь инициализировать ImageView в сопутствующем объекте, поскольку я хочу, чтобы методы были статическими, но у меня есть ошибка, есть ли альтернативный подход ниже, мой код

companion object {
    lateinit var bufferingAnimation : LoadingAnimation
    var bufferingIndicator = findViewById(R.id.loading)
    fun startBufferingAnimation() {
        bufferingAnimation = LoadingAnimation(bufferingIndicator)
        bufferingAnimation.startAnimation()
    }

    fun stopBufferingAnimation() {
        bufferingAnimation.clearAnimation()
    }

}

Я не могу инициализировать bufferingIndicator есть ли альтернативный подход?

2 ответа

Создание статического представления не рекомендуется, потому что это может вызвать утечки памяти, но если вам все еще нужен статический просмотр, вы можете попробовать это:-

companion object {
        lateinit var imageView: ImageView
    }

 override fun onCreate(savedInstanceState: Bundle?) {
        imageView  =findViewById<ImageView>(R.id.imageView)
    }

Если хотите initialise image view во время выполнения:-

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_image_view_example)
        val constraintLayout = findViewById(R.id.constraintLayout) as ConstraintLayout
        val imageView = ImageView(this)
        imageView.setImageResource(R.drawable.android_logo)
        constraintLayout.addView(imageView)
    }

Если у вас есть image view в XML:-

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // get reference to ImageView
        val imageView = findViewById(R.id.iv_click_me) as ImageView
    }
Другие вопросы по тегам