创建Button实例背后的逻辑与创建普通类的实例?

时间:2016-08-16 19:35:02

标签: android

当我们创建一个Button实例时,我无法理解android studio中以下代码背后的逻辑:

Button btn = (Button) findViewById(R.id.btnRegister);

据我所知,类的实例定义如下: MyClass myInstance = new MyClass(MyParameter)

如果我们应用上述逻辑,按钮代码应如下所示:

按钮btn = new按钮(findViewById(R.id.btnRegister));

但实际上上面的代码不起作用。为什么"按钮"代码如此复杂,无法理解,与单纯的代码无关?什么"(按钮)"括号中的含义表示上面的例子????

谢谢

1 个答案:

答案 0 :(得分:3)

查找视图行不会创建按钮。当您调用setContentView时,您的视图都是使用框架的标准新语法创建的。 setContentView函数解析您的xml并创建适当的类。 findViewById所做的是搜索它在setContentView中创建的视图,检查具有匹配id的id的id并返回它。

至于什么(Button) - 它是标准的Java演员。 findViewById返回一个View对象。但View的某些子类具有在视图中找不到的高级功能。要使用它们,您必须拥有正确类型的对象。所以你把它转换为正确的类型(如果它不是正确的类型将抛出异常)。例如,您需要使用TextView来调用setText,而普通的View没有该函数。