R.id.id_name
android在膨胀XML后如何使用查找视图?
1.假设我有两个带有一个按钮的 XML,每个按钮都有相同的 id。
2.我将它们膨胀并转换成视图
3.在 R.id 类int
中,两个按钮都只会创建一个。
android如何使用相同的资源名称(R.id.id_name)区分这些具有相同ID的按钮。
R.id.id_name
android在膨胀XML后如何使用查找视图?
1.假设我有两个带有一个按钮的 XML,每个按钮都有相同的 id。
2.我将它们膨胀并转换成视图
3.在 R.id 类int
中,两个按钮都只会创建一个。
android如何使用相同的资源名称(R.id.id_name)区分这些具有相同ID的按钮。
ID 不是唯一的参考。
但是,在实践中,您可以通过使用父视图来区分。
如果我们认为 'this' 是一个 Activity,设置一个包含您的按钮的布局,那么:
Button button = (Button) this.findViewById( R.id.id_name );
将返回它在布局中找到的第一个(我认为 - 不确定实际行为是否已定义)。
但是,您可能会调用findViewById
一些仅包含一个具有该 ID 的此类实例的父视图。
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 文件中查找View
此特定内容。id