【问题标题】:Create YouTubePlayerSupportFragment programmatically (Android)以编程方式创建 YouTubePlayerSupportFragment (Android)
【发布时间】:2017-02-13 13:37:27
【问题描述】:

我需要动态创建 YouTubePlayer,我不能在 YoutubeBaseActivity 上扩展。所以我只需要创建 YouTubePlayerSupportFragment。我试过这样做:

container_more_info_item - 我的线性布局

//create video
        for(int j = 0; j < 5; j++) {
            final YouTubePlayerSupportFragment ysF = new YouTubePlayerSupportFragment();
            ysF.initialize("AIzbSyAT5C-xs5YG1HzG69Fn__PHq9DHXBuKpws", new YouTubePlayer.OnInitializedListener() {
                @Override
                public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
                    youTubePlayer.cueVideo("IjUlQU6yifk");
                }

                @Override
                public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {

                }
            });

//this line error, because ViewGroup can not be applied com.google.android.youtube.player.YouTubePlayerSupportFragment
            container_more_info_item.addView(ysF);
        }

现在我被卡住了,想不出什么办法

UPD:

我使用 FragmentManager,但我收到以下消息:

无法解析方法'add(int, com.google.android.youtube.player.YouTubePlayerSupportFragment)

 //create video
        for(int j = 0; j < 5; j++) {
            final YouTubePlayerSupportFragment ysF = new YouTubePlayerSupportFragment();
            ysF.initialize("AIzaSyAT5C-xs5YG1HzG69Fn__PHq9DHXBuKpws", new YouTubePlayer.OnInitializedListener() {
                @Override
                public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
                    youTubePlayer.cueVideo("IjUlQU6yifk");
                }

                @Override
                public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {

                }
            });

            LinearLayout ll = new LinearLayout(this);
            ll.setOrientation(LinearLayout.HORIZONTAL);

            ll.setId(j);

            FragmentManager fragmentManager = getFragmentManager();
            FragmentTransaction fragTransaction = fragmentManager.beginTransaction();
//Cannot resolve method 'add(int, com.google.android.youtube.player.YouTubePlayerSupportFragment)
            fragTransaction.add(ll.getId(), ysF);
            fragTransaction.commit();

            container_more_info_item.addView(ll);
        }

【问题讨论】:

  • 要添加一个片段,你应该使用FragmentManagerdeveloper.android.com/guide/components/…
  • @KenWolf 感谢您的评论,我更新了我的问题。请检查我做对了吗?
  • 使用getSupportFragmentManager() 而不是getFragmentManager()
  • @KenWolf 谢谢,它工作!

标签: java android dynamic android-youtube-api


【解决方案1】:

YouTubePlayerSupportFragment 不是View,而是Fragment

添加片段的过程与添加视图有点不同。

添加片段:

FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.your_fragment_container, ysF);
ft.commit();

https://developer.android.com/guide/components/fragments.html#Transactions

【讨论】:

    猜你喜欢
    • 2018-04-29
    • 2019-04-26
    • 2016-04-05
    • 2011-09-24
    • 2015-10-26
    • 2014-01-26
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    相关资源
    最近更新 更多