首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在同一活动中更改布局文件

在同一活动中更改布局文件
EN

Stack Overflow用户
提问于 2013-03-20 17:27:44
回答 3查看 8K关注 0票数 19

我正在使用setContentView(R.layout.main)在同一个活动中切换视图。我正在调用一些异步任务,并在主布局文件中填充数据,之后我将通过调用setContentView(R.layout.main)方法来更改视图。

我开始意识到,对于同一个活动,不应该多次使用setContentView方法。尽管它对我来说工作得很好。

有人能解释一下为什么我们不应该多次使用 setContentView 方法来更改视图吗?

它会创建任何与内存相关的异常吗?有人能澄清一下吗?

EN

回答 3

Stack Overflow用户

发布于 2013-03-20 17:38:04

我认为切换视图不是一个好主意,因为android平台已经有了强大的框架来处理视图之间的转换,并维护与活动相关的每个视图的状态。坚持现有的框架总是更好,而不是考虑一些复杂的实现来完成所有这些事情。如果你不需要在你的应用程序中处理这些事情,如果你在整个应用程序中只有两个或三个屏幕,你可以尝试切换视图。即使根据你的视图的结构,如果你有复杂的逻辑和大量的数据来创建这些视图,这也不是一个做it.One更多事情的好方法,如果你正在给你的应用程序添加更多的视图,比如说功能,活动需要处理的负载将会很高。在本例中,您将声明并初始化该特定活动中的所有视图,因此维护所有这些视图实例非常繁重。如果您想了解有关活动和任务的更多信息,请访问refer this link

票数 2
EN

Stack Overflow用户

发布于 2013-03-20 17:44:42

好吧,每次你调用setContentView()的时候,你必须再次找到所有的布局,除此之外,我认为你“可以”做到这一点。但正如所讨论的那样,here建议这是ill,因为它显然违反了安卓的指导方针。另外,Commonsware有一些非常重要的要点,其中最重要的一点是,当你忘记清理视图中的东西时,你会很容易泄漏内存,而here通常会为你处理这些事情。

简而言之,你应该遵循安卓的指导方针,使用Fragments或开始一个新的Activity

票数 0
EN

Stack Overflow用户

发布于 2013-03-20 17:46:09

根据developer docs setContentView(int layoutResID)是用来

从布局资源设置活动内容。资源将被膨胀,将所有顶级视图添加到活动中。

在最佳实践中,此方法用于在启动时膨胀Activity布局。这并不意味着如果您继续使用此方法,将来就会出现问题。在this问题中引用答案

活动上的setContentView实际上调用了活动所使用的窗口上的setContentView,它本身所做的远不止是膨胀布局。

我建议您找到另一种切换布局的方法,比如使用带有FragmentsViewPager或其他制表符方法,但最终都取决于您想要做什么。

This问题也可能给你你想要的东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15519658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档