Инициализируйте 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
}