При отображении горизонтального списка в BottomSheetDialogFragment происходит краш

Хочу показать модальный BottomSheetDialogFragment с картинками и способами шаринга в виде горизонтального списка. Картинки анимируются по средством ViewPropertyAnimator, при этом под картинками находится горизонтальный список RecyclerView, с достаточно примитвной версткой:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <include
        android:id="@+id/iconLayout"
        layout="@layout/share_icon_item" />

    <TextView
        android:id="@+id/shareVariantName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

сам share_icon_item.xml

<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/shareVariantImage"
        android:layout_width="@dimen/share_variant_size"
        android:padding="@dimen/spacing_16"
        android:layout_height="@dimen/share_variant_size"
        android:background="@drawable/shadow"
        tools:src="@drawable/ic_gallery" />

верстка для BottomSheetDialogFragment:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <FrameLayout
        android:id="@+id/resultContentContainer"
        android:layout_width="112dp"
        android:layout_height="200dp"
        android:layout_marginTop="60dp"
        android:layout_marginBottom="40dp"
        app:layout_constraintBottom_toBottomOf="@id/shareMessage"
        app:layout_constraintDimensionRatio="H, 4:3"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <ImageView
            android:id="@+id/imageResult"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@drawable/share_preset_rounded_corners_background"
            android:visibility="gone"
            tools:visibility="gone" />

        <VideoView
            android:id="@+id/videoResult"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@drawable/share_preset_rounded_corners_background"
            android:visibility="gone" />
    </FrameLayout>

    <ImageView
        android:id="@+id/leftImage"
        android:layout_width="56dp"
        android:layout_height="56dp"
        android:background="@drawable/share_preset_rounded_corners_background"
        android:visibility="gone"
        app:layout_constraintBottom_toBottomOf="@id/flResultContainer"
        app:layout_constraintStart_toStartOf="@id/flResultContainer"
        tools:visibility="visible" />

    <ImageView
        android:id="@+id/topImage"
        android:layout_width="48dp"
        android:layout_height="60dp"
        android:background="@drawable/share_preset_rounded_corners_background"
        android:visibility="gone"
        app:layout_constraintStart_toStartOf="@id/flResultContainer"
        app:layout_constraintTop_toTopOf="@id/flResultContainer"
        tools:visibility="visible" />

    <ImageView
        android:id="@+id/bottomImage"
        android:layout_width="64dp"
        android:layout_height="80dp"
        android:background="@drawable/share_preset_rounded_corners_background"
        android:visibility="gone"
        app:layout_constraintBottom_toBottomOf="@id/flResultContainer"
        app:layout_constraintEnd_toEndOf="@id/flResultContainer"
        tools:visibility="visible" />

    <TextView
        android:id="@+id/shareMessage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintBottom_toTopOf="@id/rvShareVariants"
        tools:text="Share link to give access 
to your content"/>

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/shareVariants"
        android:layout_width="0dp"
        android:layout_height="96dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        android:orientation="horizontal"
        app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
        tools:listitem="@layout/share_variant_item" />

</androidx.constraintlayout.widget.ConstraintLayout>

Адаптер и список я инициализирую внутри onViewCreated, а данные в список кладу через подписку на лайвдату. Сет данных в адаптер происходит так:

    var items: List<ShareVariant> = emptyList()
        set(value) {
            field = value
            notifyDataSetChanged()
        }

Когда BottomSheetDialogFragment открывается через show(FragmentManager, Tag), то приложение падает с ошибкой

java.lang.IllegalArgumentException: Scrapped or attached views may not be recycled. isScrap:false isAttached:true androidx.recyclerview.widget.RecyclerView{8b5d225 VFED..... ......ID 0,900-1080,1188 #7f0a0292 app:id/shareVariants}, adapter:com.example.app.ui.share.preset.ShareVariantAdapter@6457b13, layout:com.example.app.ui.share._base.LinearLayoutManager@ac76150, context:android.view.ContextThemeWrapper@30c79eb

Насколько я понял это потому, что элементы во время фазы переиспользования имеют родителя который не равен null.

Погуглил похожие штуки:

  • Убирание animateLayoutChanges - не работает
  • hasStableIds и переопределение getItemId - не работает
  • Убирание префетча тоже не работает

Ответы (0 шт):