'Error inflating class com.google.android.exoplayer2.ui.StyledPlayerView

I was using SimpleExoPlayerView till now and now updated my Exoplayer library to latest and it is removed and has been asked to replace with PlayerView But it is also deprecated and has been asked to implement StyledPlayerView But after implementing the StyledPlayerView I am getting a crash Error inflating class com.google.android.exoplayer2.ui.StyledPlayerView

app level build.gradle:

android {
...
compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
...
}

dependencies {
...
implementation 'com.google.android.exoplayer:exoplayer:2.17.1'
...
}

xml File:

<LinearLayout
        android:id="@+id/ll_exoplayer"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginTop="16dp"
        android:layout_marginBottom="16dp"
        app:layout_constraintBottom_toTopOf="@+id/done_tv"
        app:layout_constraintDimensionRatio="9:16"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.509"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/constraintLayout2">

        <com.google.android.exoplayer2.ui.StyledPlayerView
            android:id="@+id/exoplayer"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:visibility="visible"
            app:controller_layout_id="@layout/exo_playback_control_view" />
    </LinearLayout>

Crash Log:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.app.package/com.app.package.login.AppTutorialActivity}: android.view.InflateException: Binary XML file line #113 in com.app.package:layout/activity_app_tutorial: Binary XML file line #113 in com.app.package:layout/activity_app_tutorial: Error inflating class com.google.android.exoplayer2.ui.StyledPlayerView
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3611)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3775)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2246)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:233)
        at android.app.ActivityThread.main(ActivityThread.java:8010)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:631)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:978)
     Caused by: android.view.InflateException: Binary XML file line #113 in com.app.package:layout/activity_app_tutorial: Binary XML file line #113 in com.app.package:layout/activity_app_tutorial: Error inflating class com.google.android.exoplayer2.ui.StyledPlayerView
     Caused by: android.view.InflateException: Binary XML file line #113 in com.app.package:layout/activity_app_tutorial: Error inflating class com.google.android.exoplayer2.ui.StyledPlayerView
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Constructor.newInstance0(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
        at android.view.LayoutInflater.createView(LayoutInflater.java:852)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1004)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:959)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:1121)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1082)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:1124)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1082)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:680)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:532)
        at androidx.databinding.DataBindingUtil.inflate(DataBindingUtil.java:126)
        at androidx.databinding.ViewDataBinding.inflateInternal(ViewDataBinding.java:1409)
        at com.app.package.databinding.ActivityAppTutorialBinding.inflate(ActivityAppTutorialBinding.java:99)
        at com.app.package.databinding.ActivityAppTutorialBinding.inflate(ActivityAppTutorialBinding.java:85)
        at com.app.package.login.AppTutorialActivity$mAppTutorialBinding$2.invoke(AppTutorialActivity.kt:59)
        at com.app.package.login.AppTutorialActivity$mAppTutorialBinding$2.invoke(AppTutorialActivity.kt:59)
        at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
        at com.app.package.login.AppTutorialActivity.getMAppTutorialBinding(AppTutorialActivity.kt:59)
        at com.app.package.login.AppTutorialActivity.onCreate(AppTutorialActivity.kt:63)
        at android.app.Activity.performCreate(Activity.java:8006)
        at android.app.Activity.performCreate(Activity.java:7990)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1329)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3584)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3775)
2022-04-08 10:59:06.604 32468-32468/com.app.package E/AndroidRuntime:     at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2246)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:233)
        at android.app.ActivityThread.main(ActivityThread.java:8010)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:631)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:978)
     Caused by: android.view.InflateException: Binary XML file line #16 in com.app.package:layout/exo_styled_settings_list: Binary XML file line #16 in com.app.package:layout/exo_styled_settings_list: Error inflating class androidx.recyclerview.widget.RecyclerView
     Caused by: android.view.InflateException: Binary XML file line #16 in com.app.package:layout/exo_styled_settings_list: Error inflating class androidx.recyclerview.widget.RecyclerView
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Constructor.newInstance0(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
        at android.view.LayoutInflater.createView(LayoutInflater.java:852)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1004)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:959)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:657)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:532)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:479)
        at com.google.android.exoplayer2.ui.StyledPlayerControlView.<init>(StyledPlayerControlView.java:550)
        at com.google.android.exoplayer2.ui.StyledPlayerView.<init>(StyledPlayerView.java:418)
        at com.google.android.exoplayer2.ui.StyledPlayerView.<init>(StyledPlayerView.java:234)
        at java.lang.reflect.Constructor.newInstance0(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
        at android.view.LayoutInflater.createView(LayoutInflater.java:852)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1004)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:959)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:1121)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1082)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:1124)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1082)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:680)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:532)
        at androidx.databinding.DataBindingUtil.inflate(DataBindingUtil.java:126)
        at androidx.databinding.ViewDataBinding.inflateInternal(ViewDataBinding.java:1409)
        at com.app.package.databinding.ActivityAppTutorialBinding.inflate(ActivityAppTutorialBinding.java:99)
        at com.app.package.databinding.ActivityAppTutorialBinding.inflate(ActivityAppTutorialBinding.java:85)
        at com.app.package.login.AppTutorialActivity$mAppTutorialBinding$2.invoke(AppTutorialActivity.kt:59)
        at com.app.package.login.AppTutorialActivity$mAppTutorialBinding$2.invoke(AppTutorialActivity.kt:59)
        at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
        at com.app.package.login.AppTutorialActivity.getMAppTutorialBinding(AppTutorialActivity.kt:59)
        at com.app.package.login.AppTutorialActivity.onCreate(AppTutorialActivity.kt:63)
        at android.app.Activity.performCreate(Activity.java:8006)
        at android.app.Activity.performCreate(Activity.java:7990)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1329)
2022-04-08 10:59:06.604 32468-32468/com.app.package E/AndroidRuntime:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3584)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3775)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2246)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:233)
        at android.app.ActivityThread.main(ActivityThread.java:8010)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:631)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:978)
     Caused by: java.lang.IllegalArgumentException: Providing a LayoutTransition into RecyclerView is not supported. Please use setItemAnimator() instead for animating changes to the items in this RecyclerView
        at androidx.recyclerview.widget.RecyclerView.setLayoutTransition(RecyclerView.java:2442)
        at android.view.ViewGroup.initFromAttributes(ViewGroup.java:785)
        at android.view.ViewGroup.<init>(ViewGroup.java:711)
        at android.view.ViewGroup.<init>(ViewGroup.java:704)
        at androidx.recyclerview.widget.RecyclerView.<init>(RecyclerView.java:689)
        at androidx.recyclerview.widget.RecyclerView.<init>(RecyclerView.java:685)
            ... 46 more

exo_playback_control_view layout file:

<androidx.constraintlayout.widget.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"
    android:layout_gravity="bottom"
    android:background="#A6000000"
    android:layoutDirection="ltr"
    android:orientation="vertical">

    <FrameLayout
        android:id="@+id/exo_fullscreen_button"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="right"
        android:layout_marginEnd="8dp"
        android:layout_marginRight="8dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <ImageView
            android:id="@+id/exo_fullscreen_icon"
            android:layout_width="@dimen/dp_25"
            android:layout_height="@dimen/dp_25"
            android:layout_gravity="center"
            android:adjustViewBounds="true"
            android:scaleType="fitCenter"
            android:src="@drawable/ic_fullscreen_expand" />

    </FrameLayout>

    <LinearLayout
        android:id="@+id/linearLayout"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginEnd="8dp"
        android:layout_marginRight="8dp"
        android:gravity="left"
        android:orientation="horizontal"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/exo_fullscreen_button"
        app:layout_constraintHorizontal_bias="1.0"
        app:layout_constraintStart_toStartOf="parent">

        <ImageButton
            android:id="@id/exo_play"
            style="@style/ExoMediaButton.Play"
            android:layout_width="@dimen/dp_40"

            android:layout_height="@dimen/dp_40" />

        <ImageButton
            android:id="@id/exo_pause"
            style="@style/ExoMediaButton.Pause"
            android:layout_width="@dimen/dp_40"

            android:layout_height="@dimen/dp_40" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:orientation="horizontal"
            android:visibility="visible">

            <androidx.constraintlayout.widget.ConstraintLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <TextView
                    android:id="@id/exo_position"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginBottom="8dp"
                    android:layout_marginLeft="8dp"
                    android:layout_marginStart="8dp"
                    android:layout_marginTop="8dp"
                    android:gravity="center_vertical"
                    android:includeFontPadding="false"
                    android:paddingLeft="4dp"
                    android:paddingRight="4dp"
                    android:text=""
                    android:textColor="#FFBEBEBE"
                    android:textSize="14sp"
                    android:textStyle="bold"
                    app:layout_constraintBottom_toBottomOf="parent"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent" />

                <com.google.android.exoplayer2.ui.DefaultTimeBar
                    android:id="@id/exo_progress"
                    android:layout_width="0dp"
                    android:layout_height="24dp"
                    android:layout_gravity="center_horizontal"
                    android:layout_marginBottom="8dp"
                    android:layout_marginEnd="8dp"
                    android:layout_marginLeft="8dp"
                    android:layout_marginRight="8dp"
                    android:layout_marginStart="8dp"
                    android:layout_marginTop="8dp"
                    android:layout_weight="1"
                    android:visibility="visible"
                    app:layout_constraintBottom_toBottomOf="parent"
                    app:layout_constraintEnd_toStartOf="@+id/exo_duration"
                    app:layout_constraintStart_toEndOf="@+id/exo_position"
                    app:layout_constraintTop_toTopOf="parent" />

                <TextView
                    android:id="@id/exo_duration"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:layout_marginBottom="8dp"
                    android:layout_marginEnd="8dp"
                    android:layout_marginRight="8dp"
                    android:layout_marginTop="8dp"
                    android:includeFontPadding="false"
                    android:paddingLeft="4dp"
                    android:paddingRight="4dp"
                    android:text=""
                    android:textColor="#FFBEBEBE"
                    android:textSize="14sp"
                    android:textStyle="bold"
                    app:layout_constraintBottom_toBottomOf="parent"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintTop_toTopOf="parent" />

            </androidx.constraintlayout.widget.ConstraintLayout>


        </LinearLayout>


    </LinearLayout>


</androidx.constraintlayout.widget.ConstraintLayout>

One more thing to add. This code is in an activity. I mentioned it's an activity because I have added the same code in a fragment and it is working fine.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source