setContentView() 删除使用 addView() 添加的元素
Posted
技术标签:
【中文标题】setContentView() 删除使用 addView() 添加的元素【英文标题】:setContentView() deletes elements which have been added with addView() 【发布时间】:2018-09-08 10:00:24 【问题描述】:我的项目有 2 个布局。两者都有一个使用 setContentView 方法在彼此之间交换的按钮。每当我在这两种布局之间切换时,我使用 addView() 添加的每个 UI 元素都会丢失。但是静态 XML 元素仍然存在。
【问题讨论】:
那是因为布局被重新膨胀,当你调用 setContentView(R.layout.xml) 时,所有的视图都在 xml 中指定,这是在幕后发生的,所有动态添加的视图都将是走了。所以你需要在调用 setContentView() 后再次添加它们。 @HedShafran 是的,我知道,但必须有其他方法来解决这个问题。 这两种布局可以相互叠加,您可以切换它们的可见性。使用GONE
隐藏布局,而不是 INVISIBLE
如果布局上有可点击的元素。
@HedShafran 您的回答是我的解决方案。您可以发布它,以便我接受它作为答案。
仅供参考:您不应该多次调用setContentView()
- 只需在Activity
的onCreate()
方法中调用一次。
【参考方案1】:
这是因为布局重新膨胀,当您调用 setContentView(R.layout.xml) 时,所有视图都在 xml 中指定,这是在幕后发生的,所有动态添加的视图都将消失。
可选解决方案:
-
调用 setContentView() 后再次添加视图。
这两种布局可以相互叠加,您可以切换它们的可见性。使用
GONE
隐藏布局,而不是 INVISIBLE
如果布局上有可点击的元素。
【讨论】:
以上是关于setContentView() 删除使用 addView() 添加的元素的主要内容,如果未能解决你的问题,请参考以下文章