findViewById vs setId

时间:2011-06-14 19:36:53

标签: android view

整个开发者documents& tutorials,他们建议使用findViewById()“查找由onCreate(Bundle)中处理的XML中的id属性标识的视图”,所以我专门在任何地方使用它查看引用xml文件中的内容。这导致了许多问题,比如我需要在静态方法中使用视图,或者据我所知,除onCreate之外的任何方法。最近我偶然发现setId(),除了更简洁的写作和更具可读性,因为它遵循标准的“getters& setters”协议,似乎也没有要求你在哪里使用它应用

实际上是什么区别:

setId - “设置此视图的标识符。在此视图的层次结构中,标识符不必是唯一的。标识符应为正数。”

&安培;

findViewById - “查找具有给定id的子视图。如果此视图具有给定的id,则返回此视图。”

他们可以互换吗?是否有允许使用其中一种的情况?

2 个答案:

答案 0 :(得分:1)

使用findViewById尝试查找已经“命名”的视图,并且需要在夸大布局后执行某些操作。

使用setId为视图设置名称(例如,以编程方式创建),以便将来能够通过findViewById找到此视图。

你不仅可以在onCreate上使用findViewById。每个ViewGroul都允许您通过ID找到他们的孩子。

答案 1 :(得分:1)

这些是完全不同的方法。实际上,setId对于设置视图的ID非常有用,以便您以后可以使用findViewById再次查找它。当您知道视图的ID时,可以使用findViewById,并且希望获得与该ID关联的实际View对象。如果已有setId对象,则使用View,并且要为其设置标识符,以便稍后使用{{1}再次找到相同的View对象}。