怎么可能:
final Button okButton = (Button)findViewById(R.id.okButton);
这很清楚,是变量声明+赋值,绝对不是对象!如果是这样,我该如何执行以下操作,并在其上实际操作方法?:
okButton.setOnClickListener(this);
okButton.setOnLongClickListener(this);
??
这让人困惑...
谢谢...
怎么可能:
final Button okButton = (Button)findViewById(R.id.okButton);
这很清楚,是变量声明+赋值,绝对不是对象!如果是这样,我该如何执行以下操作,并在其上实际操作方法?:
okButton.setOnClickListener(this);
okButton.setOnLongClickListener(this);
??
这让人困惑...
谢谢...
与安卓无关。您似乎对 Java 语法感到困惑。" " 是类型 " "final Button okButton
的对象 " " 的声明。对象引用已声明为“ ”,因此无法再次分配。okButton
Button
final
如果您查看findViewById 的文档,它需要一个 int 类型的参数并返回一个视图。
findViewById
您已使用前缀(Button)
告诉系统您期望将 R.id.okButton 传递给 findViewById 将返回一个 View,它实际上是Button (View 的子类) 的一个实例。
该指令将View 返回的类型(Button)
转换findViewById
为类型按钮并将其分配给您的变量okButton
。
所以
Button okButton
意味着您已经创建了一个 Button 对象名称okButton,然后您通过您在xml中创建的按钮类型对象对其进行实例化,并提供了一个唯一的标识名称 okButton。
另一种方法是
Button okButton = new Button(this);
实际上它们之间没有区别,您可以动态创建它并且可以在不触及 xml 的情况下添加/删除它们。