Android类型参数也是对象

时间:2012-10-04 10:42:51

标签: android object methods parameters

怎么可能:

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

这很清楚它是一个变量声明+赋值,绝对不是一个对象! 如果是这样,我该怎么做,并实际操作一个方法?:

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

...

这令人困惑......

...谢谢

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

A variable can be an Object

如果查看documentation for findViewById,它需要一个int类型的参数并返回一个View。

您已将findViewById加上(Button)前缀,告诉系统您希望将R.id.okButton传递给findViewById将返回一个实际上是Button (a sub-class of View)实例的View。

指示(Button) casts findViewById向“类型”按钮返回的视图,并将其分配给您的变量okButton

所以

  • R.id.okButton是一个int,它作为参数传递给
  • findViewById这是一种方法(可能是我猜的一种活动)
  • 返回一个可以强制转换为对象的View类型的对象
  • 类型Button,分配给您的Button变量

答案 2 :(得分:0)

Button okButton表示您创建了一个Button对象名称 okButton ,然后您通过在 xml 中创建的按钮类型对象对其进行实例化,并给出了唯一的标识名字okButton。

另一种方式是

Button okButton = new Button(this);

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