Android 当你开始滚动我的反馈墙时,你的电子管播放器突然停止

Android 当你开始滚动我的反馈墙时,你的电子管播放器突然停止,android,android-fragments,android-youtube-api,Android,Android Fragments,Android Youtube Api,在我的android应用程序中,我有一个用于图像、GIF和视频的feedwall。在播放视频时,我使用的是android YouTube api,它可以播放来自YouTube链接(URL)的视频。feedwall是一个使用基本适配器的列表视图。对于视频,我使用的是包含在RelativeLayout中的FrameLayout,如下所示 <RelativeLayout android:id="@+id/feedVideoRelLayou

在我的android应用程序中,我有一个用于图像、GIF和视频的feedwall。在播放视频时,我使用的是android YouTube api,它可以播放来自YouTube链接(URL)的视频。feedwall是一个使用基本适配器的列表视图。对于视频,我使用的是包含在RelativeLayout中的FrameLayout,如下所示

             <RelativeLayout
                android:id="@+id/feedVideoRelLayout"
                android:layout_width="wrap_content"
                android:layout_height="300dp">

                <FrameLayout
                    android:id="@+id/youTubePlayerLayout"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    />
            </RelativeLayout>
现在在我的feedwall中播放视频,在我使用的适配器的getView方法中

 viewHolder.youTubePlayerLayout = YouTubePlayerSupportFragment.newInstance();
FragmentTransaction transaction;

            transaction = activityRef.getSupportFragmentManager().beginTransaction();
            transaction.add(R.id.youTubePlayerLayout, viewHolder.youTubePlayerLayout).commit();
            viewHolder.youTubePlayerLayout.initialize(DeveloperKey.DEVELOPER_KEY, new YouTubePlayer.OnInitializedListener() {
                @Override
                public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, boolean wasRestored) {
                    if (!wasRestored) {
                        player.loadVideo(Utils.getYouTubeVideoIdFromUrl(feedModelArrayList.get(position).getPostMediaURL()));
                        player.setShowFullscreenButton(false);
                        player.play();
                    }

                }

                @Override
                public void onInitializationFailure(YouTubePlayer.Provider arg0, YouTubeInitializationResult arg1) {
                    String errorMessage = arg0.toString();
                    Toast.makeText(activityRef, errorMessage, Toast.LENGTH_LONG).show();
                    Log.d("errorMessage:", errorMessage);

                }
            });
在我的feedwall中,每当检测到视频链接时,视频就会开始在YouTube播放器中播放。现在的问题是,这只是第一次发生。 向下滚动后,如果再次检测到视频链接,播放机将加载视频,但在播放后立即停止,时间为一秒钟。第二,成功播放的第一个视频提要的行为也相同,即使在点击播放按钮之后也是如此

在logcat中,我得到如下警告

 W/YouTubeAndroidPlayerAPI: YouTube video playback stopped due to unauthorized overlay on top of player. The YouTubePlayerView is not contained inside its ancestor android.widget.FrameLayout{d56f6d9 V.E...... ......I. 0,0-0,0}. The distances between the ancestor's edges and that of the YouTubePlayerView is: left: 0, top: 0, right: 0, bottom: 0 (these should all be positive).

我在SO上浏览了所有与此警告相关的线程,但不幸的是,没有一个线程有用。

而不是使用
transaction.add(R.id.youTubePlayerLayout,…)
使用
transaction.replace(R.id.youTubePlayerLayout,…)
,我认为这背后的原因是viewholder的重用。@AB这也是我尝试过的。在这种情况下,视频播放器首次加载视频并播放。但是对于第二个视图,在滚动视图之后,不会加载视图本身。有什么建议吗?你得到了同样的警告吗?@AB-yupp..我仍然得到了警告
 W/YouTubeAndroidPlayerAPI: YouTube video playback stopped due to unauthorized overlay on top of player. The YouTubePlayerView is not contained inside its ancestor android.widget.FrameLayout{d56f6d9 V.E...... ......I. 0,0-0,0}. The distances between the ancestor's edges and that of the YouTubePlayerView is: left: 0, top: 0, right: 0, bottom: 0 (these should all be positive).