0

怎么可能:

final Button okButton = (Button)findViewById(R.id.okButton);

这很清楚,是变量声明+赋值,绝对不是对象!如果是这样,我该如何执行以下操作,并在其上实际操作方法?:

okButton.setOnClickListener(this);
okButton.setOnLongClickListener(this);

??

这让人困惑...

谢谢...

4

3 回答 3

1

与安卓无关。您似乎对 Java 语法感到困惑。" " 是类型 " "final Button okButton的对象 " " 的声明。对象引用已声明为“ ”,因此无法再次分配。okButtonButtonfinal

于 2012-10-04T10:49:23.877 回答
1

变量可以是对象

如果您查看findViewById 的文档,它需要一个 int 类型的参数并返回一个视图。

findViewById您已使用前缀(Button)告诉系统您期望将 R.id.okButton 传递给 findViewById 将返回一个 View,它实际上是Button (View 的子类) 的一个实例。

该指令将View 返回的类型(Button) 转换findViewById为类型按钮并将其分配给您的变量okButton

所以

  • R.id.okButton 是一个 int,它作为参数传递给
  • findViewById 这是一种方法(我猜可能是 Activity)
  • 它返回一个可以转换为对象的 View 类型的对象
  • Button 类型,分配给您的 Button 变量
于 2012-10-04T10:52:32.710 回答
0

Button okButton意味着您已经创建了一个 Button 对象名称okButton,然后您通过您在xml中创建的按钮类型对象对其进行实例化,并提供了一个唯一的标识名称 okButton。

另一种方法是

Button okButton = new Button(this);

实际上它们之间没有区别,您可以动态创建它并且可以在不触及 xml 的情况下添加/删除它们。

于 2012-10-04T11:03:59.040 回答