在android SDK(java)上创建按钮的语法

时间:2015-03-08 23:05:01

标签: java android

我正在学习android开发,他们用这种语法给出了一个例子:

Button button = (Button) findViewById(R.id.button_id);

'Button'字告诉编译器从Button类创建一个对象。等号的严格的语法让我感到困惑。代码正在创建一个对象,但它的严格方面似乎并没有创建一个对象。

我搜索过并发现有一些方法可以创建一个对象:What are all the different ways to create an object in Java? 但是没有一个使用示例中的语法。

类似的是这一个:

  

MyObject object =(MyObject)   的Class.forName( “subin.rnd.MyObject”)的newInstance();

但它使用关键字“Class.forName”...

那么,有人可以向我解释代码的每个部分的含义吗? “findViewById”是java的一部分还是类似于编译器将按钮对象链接到屏幕的“宏”?

我对某些概念有点困惑。我想了解java代码和SDK代码之间的这种交互。

4 个答案:

答案 0 :(得分:2)

这不会创建对象。

findViewById(R.id.button_id);是一种非常正常的方法调用。它调用方法findViewById,并将R.id.button_id的值传递给它。 findViewById返回对视图的引用(在本例中为按钮)。

(Button)演员(Button)something执行以下操作:

  • 如果something不是对Button对象的引用,则抛出ClassCastException
  • 否则,让您将其用作Button参考。


没有演员,这个:

Button b = findViewById(R.id.button_id);

无法编译,因为如果findViewById实际上返回了对TextBox的引用怎么办?

答案 1 :(得分:0)

  

等号的严格的语法让我感到困惑。代码正在创建一个对象,但它的严格方面似乎并没有创建一个对象。

右侧是方法named findViewById()的调用。此方法在Java类named Activity上实现,您的代码(可能)驻留在Activity的子类中。 findViewById()方法返回一个对象。 Java中的许多方法都返回了对象。

答案 2 :(得分:0)

findViewById用于获取布局膨胀后在视图xml中定义的按钮的引用,以便在运行时进行更改。此按钮将在xml中为res / layout / Activity.xml中的活动定义(其中Activity.xml是您正在加载的活动)

第二行代码实例化了一个类subin.rnd.MyObject的对象,然后将其强制转换为MyObject。

答案 3 :(得分:0)

所有小部件都是View类的子类。基本上,您是根据XML中的标识符抓取元素并将其转换为Button。