2016-08-16 6 views
0

我々はボタンのインスタンスを作成するとき、私はアンドロイドのスタジオで、次のコードの背後にあるロジックを理解することはできません。 はMyClass myInstanceの=新しい:ボタンのインスタンスの作成と、プレーンなクラスのインスタンスの作成の背後にある論理?

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

私はクラスのインスタンスが同じように定義されて知っていることから、 MyClassの(MyParameter)

我々は上記のロジックを適用した場合、ボタンのコードは次のようにする必要があります:

ボタンBTN =新しいボタン(findViewById(R.id.btnRegister));

しかし、実際には上記のコードは機能しません。なぜ "ボタン"コードが単なるクラスのコードを理解するために複雑に関連しないのですか?上記の例で、かっこ内の "(ボタン)"とは何ですか?

ありがとうございました

答えて

3

Find行はボタンを作成しません。あなたのビューはすべて、setContentViewを呼び出すときにフレームワークによる標準の新しい構文を使用して作成されます。 setContentView関数はxmlを解析し、適切なクラスを作成します。 findViewByIdは、setContentViewで作成したビューを検索して、一致するIDを持つIDのIDをチェックし、それを返します。

(Button)は標準のJavaキャストと同様です。 findViewByIdはViewオブジェクトを返します。しかし、Viewのいくつかのサブクラスでは、高度な機能は見えません。それらを使用するには、正しいタイプのオブジェクトが必要です。したがって、正しい型にキャストします(正しい型でない場合は例外がスローされます)。たとえば、setTextを呼び出すにはTextViewが必要です。通常のV​​iewにはその機能はありません。

関連する問題