mContainer.removeAllViewsInLayout();
mContainer.addView(nViews)
但我记得这个错误:
The specified child already has a parent. You must call removeView()
on the child's parent first
出了什么问题?
答案 0 :(得分:0)
removeAllViewsInLayout()
和removeAllViews()
之间存在重要差异。
前者可能无法删除所有视图,后者将删除所有视图。除非您使用自己的逻辑来确定removeAllViewsInLayout()
中删除了哪些视图,否则您可能会尝试向布局添加重复的视图。
事实上,removeAllViewsInLayout()
附带了此警告:
除非您正在扩展ViewGroup并了解视图测量和布局管道,否则不要调用此方法。
根据您的帖子,我假设您没有扩展ViewGroup并正确分析测量/布局管道,因此不应该调用该方法。
但是,如果mContainer
不是nViews
的实际父级,则清除mContainer
是不够的。在这种情况下,您必须先使用nViews
方法删除removeView()
方法,然后才能将其添加到mContainer
。