private VIEw mVIEw = null;@OverrIDepublic VIEw onCreateVIEw(LayoutInflater inflater,VIEwGroup container,Bundle savedInstanceState){ if (mVIEw == null) mVIEw = inflater.inflate(R.layout.vIEw); return mVIEw;}
这样做与观众等一样.现在我开始在简单的活动中使用我的片段,如果并且只有当我将片段添加到后台时,这将由于java.lang.IllegalStateException而失败:指定的子节点已经有一个父节点.您必须首先调用子对象的removeVIEw().
所以我的问题是:
>是的,如果我查看父母的意见,删除它并将其添加到新的父母?
>或者我应该总是重新创建视图,不要重复使用它?如果是,为什么?
>还有其他点,重用视图会失败吗?
首先,我们通过调用onCreateVIEw()(第845行)创建一个视图,然后我们用另一个视图来包装创建的视图,这个视图成为我们视图的父级(行848-849).这意味着我们的观点不会成为真正的容器的孩子,但它现在是包装器的一个孩子.当视图从容器中删除时(第998行),重复使用的问题就出现了. FragmentManager从容器中删除包装器视图,但是我们的真实视图保持添加到父包装器视图中.这是导致您遇到的问题.
因此,如果从其父项中删除视图,则可以正常工作.即使知道这一点,我不建议在片段中再次使用观点,因为视图可以比片段长一点,因为即使片段被破坏,它们也可以用于“消失”动画.如果您尝试从当时的父母中删除这样的视图,那么动画可能会被破坏.
不缓存视图的另一个观点是AndroID不支持按设计在片段中进行视图回收.记住listadapter允许重用视图? AndroID会关注缓存和适当地重用这些视图.这不是片段的情况.
总结以上是内存溢出为你收集整理的android – 片段 – 应该在onCreateView中重用视图,我该怎么做?全部内容,希望文章能够帮你解决android – 片段 – 应该在onCreateView中重用视图,我该怎么做?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)