怎么可能:
final Button okButton = (Button)findViewById(R.id.okButton);
这很清楚它是一个变量声明+赋值,绝对不是一个对象! 如果是这样,我该怎么做,并实际操作一个方法?:
okButton.setOnClickListener(this);
okButton.setOnLongClickListener(this);
...
这令人困惑......
...谢谢
答案 0 :(得分:1)
与Android无关。您似乎对Java语法感到困惑。 “final Button okButton
”是“okButton
”类型的对象“Button
”的声明。对象引用已声明为“final
”,因此无法再次分配。
答案 1 :(得分:1)
如果查看documentation for findViewById,它需要一个int类型的参数并返回一个View。
您已将findViewById
加上(Button)
前缀,告诉系统您希望将R.id.okButton传递给findViewById将返回一个实际上是Button (a sub-class of View)实例的View。
指示(Button)
casts findViewById
向“类型”按钮返回的视图,并将其分配给您的变量okButton
。
所以
答案 2 :(得分:0)
Button okButton
表示您创建了一个Button对象名称 okButton ,然后您通过在 xml 中创建的按钮类型对象对其进行实例化,并给出了唯一的标识名字okButton。
另一种方式是
Button okButton = new Button(this);
实际上它们之间没有区别,第二,你动态创建它并且可以在不触及xml的情况下添加/删除它们。