【发布时间】:2014-02-22 00:52:02
【问题描述】:
这段代码背后的意图是什么?
Button sButton = (Button) findViewById(R.id.button_1);
【问题讨论】:
-
我完全回答了你的问题吗?
标签: java android button android-button
这段代码背后的意图是什么?
Button sButton = (Button) findViewById(R.id.button_1);
【问题讨论】:
标签: java android button android-button
在您的 XML 文件中,您为放在屏幕上的小部件创建 ID。
在该代码中,您正在创建一个按钮引用 (sButton) 作为与 button_1 的 ID 对应的按钮
findViewById 根据 ID 搜索按钮 - ID 位于项目的 R.java 文件中:Project Folder > gen > package > R.java
R.java 文件包含对项目中所有内容(或基本上所有内容?)的引用。这是它的重要组成部分。
这就是findViewById 的参数是R.id.button_1 的原因,因为您在R 类中搜索button_1 的ID(它是一个静态字段)。
然后,您将button_1 的ID 转换为(Button) 在findViewById 前面的按钮。
补充说明:
如果您查看R.java 类,您将其声明为:public final class R {,这就是R.id.button_1 中的R 的来源。
然后你有另一个像这样的内部类:public static final class id { 这就是id 在R.id.button_1 中的来源
然后,在id 内部类中,你有这个(以及其他东西):public static final int button_1=...; 其中... 将是一些代码来表示int 值。这就是button_1 在R.id.button_1 中的来源
所以基本上,R.id.button_1 转到 R 类,然后是 id 内部类,然后访问 id 名称的实际 int 值。
【讨论】:
R.java 类 - 当你创建东西时,它会为你做。是的,因为findViewById(...) 返回一个View,它也可以是TextView、EditText 等。是的,Android 文档做得很好。
它通过它的 id 在关联的布局 XML 中找到一个视图,并将其转换为 Button。是你问的吗?
【讨论】:
它用于查找您在 XML 中创建的 Button 并将其带入 Java 代码以便您可以使用它。如果您不这样做,您将无法为按钮提供任何操作。
【讨论】: