繁体   English   中英

具有相同ID的两个视图

[英]two views with same id

膨胀XML后,android如何使用R.id.id_name查找视图?

1.假设我有两个带有一个按钮的XML,每个按钮具有相同的ID。

2.我夸大了它们并将它们转换为视图

3.在R.id类中,两个按钮都只会创建一个int

android如何使用相同的Resource name(R.id.id_name)区分具有相同id的这些按钮。

该ID不是唯一参考。

但是,实际上,您可以通过使用父视图来区分。

如果我们认为“这”是一个活动,请设置包含您的按钮的布局,然后:

Button button = (Button) this.findViewById( R.id.id_name );

将返回它在布局中找到的第一个(我想-不确定是否定义了实际行为)。

但是,您可能要做的是在某些仅包含一个具有该ID的实例的父视图上调用findViewById

LinearLayout okParent = (LinearLayout) this.findViewById( R.id.okLayout );
LinearLayout cancelParent = (LinearLayout) this.findViewById( R.id.cancelLayout );

Button okButton = (Button) okParent.findViewById( R.id.id_name );
Button cancelButton = (Button) cancelParent.findViewById( R.id.id_name );

从概念上讲,这是一种基于路径的查找。 您应该谨慎设计布局,以使这成为可能。

Android走上了一条轻松之路: ID并不是应用程序范围内唯一,而是布局范围内唯一。

R.id.foo的值在两个具有foo id的控件的不同布局中是相同的。 由于他们不竞争唯一性,所以没关系。

它知道应该使用哪个View ,因为它会在当前设置为内容视图(或已充气)的XML文件中查找具有此特定id View

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM