4

アダプタ内に YouTubePlayerView を配置しようとしていますが、成功しませんでした。

新しいインテントを呼び出したくありません。アプリ内でビデオを表示したい。

YouTubeAndroidPlayerApi.jar をフォルダー libs 内に配置し、プロジェクトのプロパティを確認すると、すべて問題ありません (このチュートリアルに従いました) 。

これが私の XML コードとログです。

<LinearLayout
        android:id="@+id/ll_contentExercicios_LayoutVideoGif"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <com.google.android.youtube.player.YouTubePlayerView 
            android:id="@+id/vv_contentExercicios_YoutubeVideo"
            android:layout_width="300dp"
            android:layout_height="150dp" />


        <ImageView
            android:id="@+id/iv_contentExercicios_GifExercicio"
            android:layout_width="100dp"
            android:layout_height="150dp"
            android:layout_marginLeft="30dp" >
        </ImageView>
 </LinearLayout>

10-29 13:03:42.598: E/AndroidRuntime(4513): FATAL EXCEPTION: main
10-29 13:03:42.598: E/AndroidRuntime(4513): java.lang.RuntimeException: Unable to start activity ComponentInfo{br.com.timo.atlas/br.com.timo.atlas.PrincipalActivity}: android.view.InflateException: Binary XML file line #121: Error inflating class com.google.android.youtube.player.YouTubePlayerView
10-29 13:03:42.598: E/AndroidRuntime(4513):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097)
10-29 13:03:42.598: E/AndroidRuntime(4513):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2122)
10-29 13:03:42.598: E/AndroidRuntime(4513):     at android.app.ActivityThread.access$600(ActivityThread.java:140)
10-29 13:03:42.598: E/AndroidRuntime(4513):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1228)
10-29 13:03:42.598: E/AndroidRuntime(4513):     at android.os.Handler.dispatchMessage(Handler.java:99)
10-29 13:03:42.598: E/AndroidRuntime(4513):     at android.os.Looper.loop(Looper.java:137)
10-29 13:03:42.598: E/AndroidRuntime(4513):     at android.app.ActivityThread.main(ActivityThread.java:4895)
10-29 13:03:42.598: E/AndroidRuntime(4513):     at java.lang.reflect.Method.invokeNative(Native Method)
10-29 13:03:42.598: E/AndroidRuntime(4513):     at java.lang.reflect.Method.invoke(Method.java:511)
10-29 13:03:42.598: E/AndroidRuntime(4513):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:994)
10-29 13:03:42.598: E/AndroidRuntime(4513):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:761)
10-29 13:03:42.598: E/AndroidRuntime(4513):     at dalvik.system.NativeStart.main(Native Method)
10-29 13:03:42.598: E/AndroidRuntime(4513): Caused by: android.view.InflateException: Binary XML file line #121: Error inflating class com.google.android.youtube.player.YouTubePlayerView
10-29 13:03:42.598: E/AndroidRuntime(4513):     at android.view.LayoutInflater.createView(LayoutInflater.java:613)
10-29 13:03:42.598: E/AndroidRuntime(4513):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
10-29 13:03:42.598: E/AndroidRuntime(4513):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
10-29 13:03:42.598: E/AndroidRuntime(4513):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
10-29 13:03:42.598: E/AndroidRuntime(4513):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
10-29 13:03:42.598: E/AndroidRuntime(4513):     at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
10-29 13:03:42.598: E/AndroidRuntime(4513):     at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
10-29 13:03:42.598: E/AndroidRuntime(4513):     at br.com.timo.atlas.adapters.ExerciciosAdapter.getView(ExerciciosAdapter.java:107)
10-29 13:03:42.598: E/AndroidRuntime(4513):     at br.com.timo.atlas.adapters.MusculoAdapter.getView(MusculoAdapter.java:185)
10-29 13:03:42.598: E/AndroidRuntime(4513):     at br.com.timo.atlas.PrincipalActivity.onCreate(PrincipalActivity.java:275)
10-29 13:03:42.598: E/AndroidRuntime(4513):     at android.app.Activity.performCreate(Activity.java:5163)
10-29 13:03:42.598: E/AndroidRuntime(4513):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
10-29 13:03:42.598: E/AndroidRuntime(4513):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2061)
10-29 13:03:42.598: E/AndroidRuntime(4513):     ... 11 more
10-29 13:03:42.598: E/AndroidRuntime(4513): Caused by: java.lang.reflect.InvocationTargetException
10-29 13:03:42.598: E/AndroidRuntime(4513):     at java.lang.reflect.Constructor.constructNative(Native Method)
10-29 13:03:42.598: E/AndroidRuntime(4513):     at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
10-29 13:03:42.598: E/AndroidRuntime(4513):     at android.view.LayoutInflater.createView(LayoutInflater.java:587)
10-29 13:03:42.598: E/AndroidRuntime(4513):     ... 23 more
10-29 13:03:42.598: E/AndroidRuntime(4513): Caused by: java.lang.IllegalStateException: A YouTubePlayerView can only be created with an Activity  which extends YouTubeBaseActivity as its context.
10-29 13:03:42.598: E/AndroidRuntime(4513):     at com.google.android.youtube.player.YouTubePlayerView.(Unknown Source)
10-29 13:03:42.598: E/AndroidRuntime(4513):     at com.google.android.youtube.player.YouTubePlayerView.(Unknown Source)
10-29 13:03:42.598: E/AndroidRuntime(4513):     ... 26 more

PS: Youtube API のドキュメントを読んでいましたが、アクティビティが YouTubeBaseActivity を拡張して YouTubePlayerView を使用する必要があるとのことでしたので、BaseAdapter 内に YouTubePlayerView を作成する何らかの方法が必要になることがわかっています。

ありがとうございます。

4

4 に答える 4

1

はい、YouTubeBaseActivity を拡張する必要があります。または、android.support.v4 から YouTubePlayerSupportFragment と FrameActivity を使用できます。

<fragment
  android:name="com.google.android.youtube.player.YouTubePlayerSupportFragment"
  android:id="@+id/youtube_fragment"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"/>
于 2013-12-09T19:58:53.217 に答える
0

YouTube では、1 つのアクティビティで複数の YouTube プレーヤー ビューを許可していません。あなたの要件はわかりませんが、フラグメントでビューページャーを使用でき、A フラグメント内で、childfragmentmanager を使用してフラグメントに youtubefragment を動的に追加できます。

于 2017-09-04T06:14:14.233 に答える