当我们创建一个Button实例时,我无法理解android studio中以下代码背后的逻辑:
Button btn = (Button) findViewById(R.id.btnRegister);
据我所知,类的实例定义如下: MyClass myInstance = new MyClass(MyParameter)
如果我们应用上述逻辑,按钮代码应如下所示:
按钮btn = new按钮(findViewById(R.id.btnRegister));
但实际上上面的代码不起作用。为什么"按钮"代码如此复杂,无法理解,与单纯的代码无关?什么"(按钮)"括号中的含义表示上面的例子????
谢谢
答案 0 :(得分:3)
查找视图行不会创建按钮。当您调用setContentView时,您的视图都是使用框架的标准新语法创建的。 setContentView函数解析您的xml并创建适当的类。 findViewById所做的是搜索它在setContentView中创建的视图,检查具有匹配id的id的id并返回它。
至于什么(Button) - 它是标准的Java演员。 findViewById返回一个View对象。但View的某些子类具有在视图中找不到的高级功能。要使用它们,您必须拥有正确类型的对象。所以你把它转换为正确的类型(如果它不是正确的类型将抛出异常)。例如,您需要使用TextView来调用setText,而普通的View没有该函数。