我正在使用setContentView(R.layout.main)
在同一个活动中切换视图。我正在调用一些异步任务,并在主布局文件中填充数据,之后我将通过调用setContentView(R.layout.main)
方法来更改视图。
我开始意识到,对于同一个活动,不应该多次使用setContentView
方法。尽管它对我来说工作得很好。
有人能解释一下为什么我们不应该多次使用 setContentView
方法来更改视图吗?
它会创建任何与内存相关的异常吗?有人能澄清一下吗?
发布于 2013-03-20 17:38:04
我认为切换视图不是一个好主意,因为android平台已经有了强大的框架来处理视图之间的转换,并维护与活动相关的每个视图的状态。坚持现有的框架总是更好,而不是考虑一些复杂的实现来完成所有这些事情。如果你不需要在你的应用程序中处理这些事情,如果你在整个应用程序中只有两个或三个屏幕,你可以尝试切换视图。即使根据你的视图的结构,如果你有复杂的逻辑和大量的数据来创建这些视图,这也不是一个做it.One更多事情的好方法,如果你正在给你的应用程序添加更多的视图,比如说功能,活动需要处理的负载将会很高。在本例中,您将声明并初始化该特定活动中的所有视图,因此维护所有这些视图实例非常繁重。如果您想了解有关活动和任务的更多信息,请访问refer this link
发布于 2013-03-20 17:44:42
发布于 2013-03-20 17:46:09
根据developer docs setContentView(int layoutResID)是用来
从布局资源设置活动内容。资源将被膨胀,将所有顶级视图添加到活动中。
在最佳实践中,此方法用于在启动时膨胀Activity
布局。这并不意味着如果您继续使用此方法,将来就会出现问题。在this问题中引用答案
活动上的setContentView实际上调用了活动所使用的窗口上的setContentView,它本身所做的远不止是膨胀布局。
我建议您找到另一种切换布局的方法,比如使用带有Fragments
的ViewPager
或其他制表符方法,但最终都取决于您想要做什么。
This问题也可能给你你想要的东西。
https://stackoverflow.com/questions/15519658
复制相似问题