У меня есть макет XML с именем layout_image
, например:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/grumpy_cat"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
Я включаю XML в несколько активностей / фрагментов
<include
android:id="@+id/llytImage"
layout="@layout/layout_image"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
Я установил цветной фильтр на imageView
в Actitivty A, обратившись к нему с помощью синтетического kotlinx:
import kotlinx.android.synthetic.main.layout_image.view.*
llytImage.imageView.setColorFilter(Color.RED)
Он становится красным, и я перехожу к занятию B. Мероприятие B также включает в себя тот же макет XML с тем же идентификатором. Тем не менее, imageView
по-прежнему красный в действии B.
Кажется, что Котлин кеширует состояние imageView
и использует то же представление, чтобы улучшить производительность.
Однако я не хочу, чтобы он кешировал imageView
. Мне нужно состояние по умолчанию. Я попробовал 2 способа, чтобы Kotlin не смог его кешировать:
- Использование аннотации
@ContainerOptions(CacheImplementation.NO_CACHE)
в действиях, включающих XML
- Вызов
imageView.clearFindViewByIdCache()
при переходе к занятию B
Никто из них не работал для меня.
Если вы знаете истинное решение, я буду очень признателен.
Спасибо