问题
I'm developing application which uses YouTube android API.
For playing video I used YouTubePlayerFragment.
When I extend my activity from Activity class all goes right, but when I switched to AppCompatActivity and YouTubePlayerSupportFragment video can't start and I see these errors in logcat:
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: Error creating YouTubePlayerView
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: com.google.android.youtube.player.internal.w$a: Exception thrown by invoked constructor in com.google.android.youtube.api.jar.client.RemoteEmbeddedPlayer
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.internal.w.a(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.internal.w.a(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.internal.w.a(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.internal.ac.a(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.YouTubePlayerView.a(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.YouTubePlayerView$1.a(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.internal.r.g(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.internal.r$c.a(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.internal.r$b.a(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.internal.r$a.handleMessage(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at android.os.Handler.dispatchMessage(Handler.java:102)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at android.os.Looper.loop(Looper.java:146)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at android.app.ActivityThread.main(ActivityThread.java:5603)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at java.lang.reflect.Method.invokeNative(Native Method)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at java.lang.reflect.Method.invoke(Method.java:515)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at dalvik.system.NativeStart.main(Native Method)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: Caused by: java.lang.reflect.InvocationTargetException
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at java.lang.reflect.Constructor.constructNative(Native Method)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.internal.w.a(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.internal.w.a(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.internal.w.a(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.internal.ac.a(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.YouTubePlayerView.a(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.YouTubePlayerView$1.a(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.internal.r.g(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.internal.r$c.a(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.internal.r$b.a(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.internal.r$a.handleMessage(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at android.os.Handler.dispatchMessage(Handler.java:102)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at android.os.Looper.loop(Looper.java:146)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at android.app.ActivityThread.main(ActivityThread.java:5603)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at java.lang.reflect.Method.invokeNative(Native Method)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at java.lang.reflect.Method.invoke(Method.java:515)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at dalvik.system.NativeStart.main(Native Method)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: Caused by: android.view.InflateException: Binary XML file line #91: Error inflating class ImageView
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:719)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at android.view.LayoutInflater.rInflate(LayoutInflater.java:769)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at android.view.LayoutInflater.rInflate(LayoutInflater.java:769)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at android.view.LayoutInflater.inflate(LayoutInflater.java:498)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at android.view.LayoutInflater.inflate(LayoutInflater.java:398)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at android.view.LayoutInflater.inflate(LayoutInflater.java:354)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at dbz.<init>(SourceFile:69)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at afh.<init>(SourceFile:115)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.api.jar.client.RemoteEmbeddedPlayer.<init>(SourceFile:175)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.api.jar.client.RemoteEmbeddedPlayer.<init>(SourceFile:158)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.api.jar.client.RemoteEmbeddedPlayer.<init>(SourceFile:145)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at java.lang.reflect.Constructor.constructNative(Native Method)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.internal.w.a(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.internal.w.a(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.internal.w.a(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.internal.ac.a(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.YouTubePlayerView.a(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.YouTubePlayerView$1.a(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.internal.r.g(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.internal.r$c.a(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.internal.r$b.a(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.internal.r$a.handleMessage(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at android.os.Handler.dispatchMessage(Handler.java:102)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at android.os.Looper.loop(Looper.java:146)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at android.app.ActivityThread.main(ActivityThread.java:5603)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at java.lang.reflect.Method.invokeNative(Native Method)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at java.lang.reflect.Method.invoke(Method.java:515)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at dalvik.system.NativeStart.main(Native Method)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: Caused by: java.lang.ClassCastException: android.graphics.drawable.BitmapDrawable cannot be cast to android.graphics.drawable.LayerDrawable
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at android.support.v7.internal.widget.TintManager.getDrawable(TintManager.java:202)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at android.support.v7.internal.widget.TintManager.getDrawable(TintManager.java:170)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at android.support.v7.internal.widget.TintTypedArray.getDrawable(TintTypedArray.java:62)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at android.support.v7.widget.AppCompatImageHelper.loadFromAttributes(AppCompatImageHelper.java:45)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:68)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:56)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at android.support.v7.internal.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:98)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at android.support.v7.app.AppCompatDelegateImplV7.createView(AppCompatDelegateImplV7.java:926)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at android.support.v7.app.AppCompatDelegateImplV7.onCreateView(AppCompatDelegateImplV7.java:980)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:690)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at android.view.LayoutInflater.rInflate(LayoutInflater.java:769)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at android.view.LayoutInflater.rInflate(LayoutInflater.java:769)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at android.view.LayoutInflater.inflate(LayoutInflater.java:498)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at android.view.LayoutInflater.inflate(LayoutInflater.java:398)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at android.view.LayoutInflater.inflate(LayoutInflater.java:354)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at dbz.<init>(SourceFile:69)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at afh.<init>(SourceFile:115)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.api.jar.client.RemoteEmbeddedPlayer.<init>(SourceFile:175)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.api.jar.client.RemoteEmbeddedPlayer.<init>(SourceFile:158)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.api.jar.client.RemoteEmbeddedPlayer.<init>(SourceFile:145)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at java.lang.reflect.Constructor.constructNative(Native Method)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.internal.w.a(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.internal.w.a(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.internal.w.a(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.internal.ac.a(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.YouTubePlayerView.a(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.YouTubePlayerView$1.a(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.internal.r.g(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.internal.r$c.a(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.internal.r$b.a(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.google.android.youtube.player.internal.r$a.handleMessage(Unknown Source)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at android.os.Handler.dispatchMessage(Handler.java:102)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at android.os.Looper.loop(Looper.java:146)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at android.app.ActivityThread.main(ActivityThread.java:5603)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at java.lang.reflect.Method.invokeNative(Native Method)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at java.lang.reflect.Method.invoke(Method.java:515)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
11-09 21:43:42.770 28199-28199/org.appspot.apprtc E/YouTubeAndroidPlayerAPI: at dalvik.system.NativeStart.main(Native Method)
Is it possible to use YouTubePlayerSupportFragment with AppCompatActivity?
回答1:
use the given code in your app build.gradle
compile 'com.android.support:appcompat-v7:23.0.1'
instead of the latest version will solve this problem.
I don't know why. Who knows the reason, please give an explanation.
回答2:
This is because latest version 23.4+ is not stable and has issues. Most latest and stable version is 23.1.1 Use this one to avoid this issue.
来源:https://stackoverflow.com/questions/33614190/youtubeplayersupportfragment-and-appcompatactivity-error