android - 膨胀类 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
解决方案
问题是在样式中设置背景颜色:
<style name="AppTheme" parent="Theme.MaterialComponents">
<!-- Customize your theme here. -->
...
<item name="android:background">@android:color/transparent</item>
...
</style>
推荐阅读
- android - Facebook Android SDK:通过应用范围的 userId 获取用户
- php - 如何在 Laravel 中为 Pivot 模型用户路由模型绑定
- typescript - 将 Next.js 与 typescript 一起使用,但不能在 WithRouterProps 中应用泛型
- javascript - 在 reactJs 中使用 id 滚动到特定 div 而不使用任何其他库
- android - Java.Lang.NoSuchMethodError:没有非静态方法“Landroid/content/Context;.getColorStateList(I)Landroid/content/res/ColorStateList;”
- angular - Angular 6 - 使用await for http客户端,如果失败我如何获得状态码
- svg - SVG动画查询
- solr - 如何使用 TZ 参数在 solr 中获取文字日期范围查询
- javascript - 尝试有条件地映射对象数组
- c - sqlite3 - 如何知道读取的行是最后一行