1

フラグメントから拡張されたアクティビティがあります

public class Youtube_visor extends Fragment{ ...

YouTubePlayerSupportFragment を使用して新しい YouTube プレーヤーを作成するメソッド

これは私のコードです:

public void playVideo () {

        fragmentManager = getActivity().getSupportFragmentManager();
        fragmentTransaction = fragmentManager.beginTransaction();

        YouTubePlayerSupportFragment player = new YouTubePlayerSupportFragment();
        fragmentTransaction.add(R.id.fragmentz, player); // fragmentz es un linearlayout que hay en el xml
        fragmentTransaction.commit();

        player.initialize(Static_generals.youtubeKey,new OnInitializedListener() {

            public void onInitializationSuccess(Provider arg0,
                    YouTubePlayer arg1, boolean arg2) {
                if (!arg2) {
                    arg1.cueVideo("3OhGkg_XT3o");
                }
            }

            @Override
            public void onInitializationFailure(Provider arg0,YouTubeInitializationResult arg1) {
                // Error
            }
        });
    }

これはタブレットで完全に機能します。2 つのフラグメントを使用したアクティビティがあり、左は動画のリスト、右は YouTube プレーヤーを作成するフラグメントです。

私の問題は、新しい YouTubePlayer を作成したくないことです。xml で宣言し、常にそれを使用したいのです。これは、xml で宣言されたフラグメントです。

   <fragment
      android:name="com.google.android.youtube.player.YouTubePlayerFragment"
      android:id="@+id/youtube_fragment"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"/>

さて、私のコードでは、次の行を置き換えます。

YouTubePlayerSupportFragment player = new YouTubePlayerSupportFragment();

この新しい行を入れます:

YouTubePlayerSupportFragment player = (YouTubePlayerSupportFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.youtube_fragment);

しかし、常にクラッシュします。私はそれについての情報を検索しましたが、利用できる情報があまりないか、見つかりませんでした:)

私は何を間違っていますか?

新しいフラグメントを正しく動作させると、フラグメントを間違って呼んでいると思います

助けていただければ幸いです。

よろしくお願いいたします

4

1 に答える 1

4

XMLに a を入れたようですが、コード内YouTubePlayerFragmentで a にキャストしようとしてYouTubePlayerSupportFragmentいます。この行を置き換えてみてください:

android:name="com.google.android.youtube.player.YouTubePlayerFragment"

これとともに:

android:name="com.google.android.youtube.player.YouTubePlayerSupportFragment"
于 2013-03-25T21:19:43.207 に答える