android - set/getId() 和 set/getTag() 的区别?

标签 android tags

我知道基本的不同是 setId()int 作为参数,而 setTag()Object 。我正在询问更多有关实用建议的信息。

当我以编程方式生成更多相同的元素时,我通过 setId(++counter) 设置它们的 ID,这样我就可以知道是哪个元素发送了 onClick事件。我可以通过 setTag(++counter) 做同样的事情,但我习惯了以前的方法。

那么我什么时候应该使用setTag(),我在使用setId()时是否犯了错误?

我想如果我的方法是正确的,那么当我想传递额外的数据时我会使用 setTag(),但我会先让你评论这个问题。

最佳答案

你猜对了。当您只需要一种方法来识别代码中的特定 View 时,您应该使用 setId(),而当您想要传递额外的信息时,您应该使用 setTag信息以及该 View(附加数据可能会也可能不会唯一标识该 View)。 您可以只使用 setTag 方法并传递一个包含 id + 附加数据的复合对象,但在这种情况下,您需要构建一个特殊对象而不是更简单的方法, 调用有问题的两个方法。

编辑: View 的文档类还包含关于这两种方法的有值(value)的信息:

ID

Views may have an integer id associated with them. These ids are typically assigned in the layout XML files, and are used to find specific views within the view tree.

标签

Unlike IDs, tags are not used to identify views. Tags are essentially an extra piece of information that can be associated with a view. They are most often used as a convenience to store data related to views in the views themselves rather than by putting them in a separate structure.

关于android - set/getId() 和 set/getTag() 的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10444760/

相关文章:

android - 从服务更新LiveData

android - 如何检测 Android 设备上的硬/软后退按钮?

javascript - 在javascript php中隐藏可见的div并显示另一个div?

objective-c - iOS:标记错误

java - 如何访问 XML 格式的 .txt 文件的值?

git - 我可以向 git 提交添加元数据吗?或者我可以在 gitk 中 stash 一些标签吗

android - Play控制台显示两个不同版本的每日安装量

java - 将参数从推送通知传递到 View

android - 即使在应用程序关闭时也要运行的后台任务

javascript - Eclipse:html文件中javascript block 中的任务标签