首页 > 解决方案 > 膨胀类 androidx.media2.widget.VideoView 时出错

问题描述

我正在尝试使用类 androidx.media2.widget.VideoView。应用程序崩溃。我正进入(状态:

TextureView 不支持显示背景可绘制对象

我没有为它设置任何可绘制的背景。您可以在下面看到我的 XML 文件的片段,而且我也没有以编程方式设置任何可绘制的背景。

这就是我在布局文件中使用它的方式:

<androidx.media2.widget.VideoView
        android:id="@+id/videoView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerInParent="true"
        android:background="@android:color/transparent"
        android:visibility="visible"
        />

这是我收到的堆栈跟踪:

2021-10-16 11:02:48.554 12002-12002/com.craftguide.app E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.craftguide.app, PID: 12002
    android.view.InflateException: Binary XML file line #28 in com.craftguide.app:layout/course_detail: Binary XML file line #28 in com.craftguide.app:layout/course_detail: Error inflating class androidx.media2.widget.VideoView
    Caused by: android.view.InflateException: Binary XML file line #28 in com.craftguide.app:layout/course_detail: Error inflating class androidx.media2.widget.VideoView
    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 com.craftguide.app.databinding.CourseDetailBinding.inflate(CourseDetailBinding.java:132)
        at craftguide.ui.main.courselist.CourseDetailFragment.onCreateView(CourseDetailFragment.kt:90)
        at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2963)
        at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:518)
        at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282)
        at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2189)
        at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2100)
        at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:2002)
        at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3138)
        at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:3072)
        at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:251)
        at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:502)
        at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:246)
        at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1435)
        at android.app.Activity.performStart(Activity.java:8024)
        at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3475)
        at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
        at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
        at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7656)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
     Caused by: java.lang.UnsupportedOperationException: TextureView doesn't support displaying a background drawable
        at android.view.TextureView.setBackgroundDrawable(TextureView.java:328)
        at android.view.View.setBackground(View.java:23655)
        at android.view.View.<init>(View.java:6037)
        at android.view.View.<init>(View.java:5430)
        at android.view.View.<init>(View.java:5409)
        at android.view.TextureView.<init>(TextureView.java:154)
        at androidx.media2.widget.VideoTextureView.<init>(VideoTextureView.java:36)
2021-10-16 11:02:48.554 12002-12002/com.craftguide.app E/AndroidRuntime:     at androidx.media2.widget.VideoView.initialize(VideoView.java:277)
        at androidx.media2.widget.VideoView.<init>(VideoView.java:267)
        at androidx.media2.widget.VideoView.<init>(VideoView.java:262)
            ... 38 more

标签: android

解决方案


问题是在样式中设置背景颜色:

<style name="AppTheme" parent="Theme.MaterialComponents">
    <!-- Customize your theme here. -->
    ...
    <item name="android:background">@android:color/transparent</item>
    ...
</style>

推荐阅读