【问题标题】:Android Development: Button- findViewById?Android 开发:Button-findViewById?
【发布时间】:2014-02-22 00:52:02
【问题描述】:

这段代码背后的意图是什么?

Button sButton = (Button) findViewById(R.id.button_1);

【问题讨论】:

  • 我完全回答了你的问题吗?

标签: java android button android-button


【解决方案1】:

在您的 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 { 这就是idR.id.button_1 中的来源

然后,在id 内部类中,你有这个(以及其他东西):
public static final int button_1=...; 其中... 将是一些代码来表示int 值。这就是button_1R.id.button_1 中的来源

所以基本上,R.id.button_1 转到 R 类,然后是 id 内部类,然后访问 id 名称的实际 int 值。

【讨论】:

  • 这已经很有用了,相信一般你不需要修改R.java类吧?另外,是否有必要强制转换为按钮?我只是 android 开发的新手(2 周),android 开发者网站会是学习的最佳资源吗?非常感谢
  • @RNI2013 从不改变 R.java 类 - 当你创建东西时,它会为你做。是的,因为findViewById(...) 返回一个View,它也可以是TextView、EditText 等。是的,Android 文档做得很好。
【解决方案2】:

它通过它的 id 在关联的布局 XML 中找到一个视图,并将其转换为 Button。是你问的吗?

【讨论】:

    【解决方案3】:

    它用于查找您在 XML 中创建的 Button 并将其带入 Java 代码以便您可以使用它。如果您不这样做,您将无法为按钮提供任何操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-23
      相关资源
      最近更新 更多