我正在尝试在ListVIEw项目中使用YouTubePlayerSupportFragment. ListVIEw位于Activity中的Fragment中.由于存在嵌套片段,我使用getChildFragmentManager()方法尝试从XML布局中查找片段.这是代码.
Java的
convertVIEw = inflater.inflate(R.layout.youtube_post_layout,null);YouTubePlayerSupportFragment youTubePlayerFragment = (YouTubePlayerSupportFragment) getChildFragmentManager().findFragmentByID(R.ID.youtube_vIDeo);if (youTubePlayerFragment == null) { Log.i("YouTube","player is null");} else { Log.i("YouTube",youTubePlayerFragment.toString());}
XML
问题是,当我尝试通过执行findFragmentByID()从XML获取它来创建片段时,它返回null,这就是发布到堆栈跟踪的内容.
我正在尝试关注YouTube API示例并对嵌套片段进行更改,但我无法找出导致问题的原因.
最佳答案你采取的整个方法都存在问题.首先,直接从XML中扩展子片段是not supported.在嵌套片段时,必须使用父片段中的getChildFragmentManager以语音方式添加它们.
其次,即使它起作用(并且在某些情况下可能),你已经夸大了视图但没有将它添加到实际片段的布局中.这就是膨胀方法中的second and third parameters所在. FragmentManager将在其当前布局中查找片段,或在backstack中查找事件,但无法找到以随机XML膨胀的片段,并且永远不会使用.
最后,也是最重要的一点,你永远不应该在ListVIEw中添加片段作为项目.片段期望生命周期与它们所处的活动相关联,而ListVIEw或任何一般的AdapterVIEw将根据需要创建,销毁和回收其子级.
可能的解决方案:
>您的列表中需要多少个视频?如果它们不多,ScrollVIEw linearLayout实际上可能是最简单的解决方案.
>如果你真的需要查看回收,也许你可以在每一行都没有实时视频吗?考虑在您的行中使用YouTubeThumbnailView,然后将用户重定向到另一个活动/在位于布局列表外部的单个YoutubeFragment中加载视频.
>如果您肯定希望直接在列表中的每一行播放视频,则需要在行布局上使用YoutubePlayerView而不是片段.在这种情况下,请仔细阅读文档,因为您需要自己处理视频初始化和查看回收. 总结
以上是内存溢出为你收集整理的android – ListView项目中的YouTubePlayerSupportFragment为null全部内容,希望文章能够帮你解决android – ListView项目中的YouTubePlayerSupportFragment为null所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)