【问题标题】:setContentView() deletes elements which have been added with addView()setContentView() 删除使用 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() 方法中调用一次。

标签: java android setcontentview


【解决方案1】:

这是因为布局重新膨胀,当您调用 setContentView(R.layout.xml) 时,所有视图都在 xml 中指定,这是在幕后发生的,所有动态添加的视图都将消失。

可选解决方案:

  1. 调用 setContentView() 后再次添加视图。
  2. 这两种布局可以相互叠加,您可以切换它们的可见性。使用 GONE 隐藏布局,而不是 INVISIBLE 如果布局上有可点击的元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-27
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    • 2021-12-19
    相关资源
    最近更新 更多