0

それはどのようにできますか:

final Button okButton = (Button)findViewById(R.id.okButton);

これは、変数宣言 + 代入であって、絶対にオブジェクトではないことは明らかです! もしそうなら、どうすれば次のことができ、実際にメソッドを操作できますか?:

okButton.setOnClickListener(this);
okButton.setOnLongClickListener(this);

??

混乱を招きます...

ありがとう...

4

3 に答える 3

1

変数はオブジェクトにすることができます

findViewByIdのドキュメントを見ると、int型のパラメーターを受け取り、ビューを返します。

R.id.okButtonをfindViewByIdに渡すと、実際にはButtonのインスタンス(Viewのサブクラス)であるViewが返されることを期待していることをシステムに通知するために接頭辞を付けfindViewByIdました。(Button)

この命令は、によって返されたビューをタイプボタンに(Button) キャストfindViewByIdし、それを変数に割り当てますokButton

それで

  • R.id.okButtonは、パラメータとしてに渡されるintです。
  • メソッドであるfindViewById(おそらく私が推測するアクティビティの)
  • これは、オブジェクトにキャストできるビュータイプのオブジェクトを返します
  • Button変数に割り当てられているタイプButtonの
于 2012-10-04T10:52:32.710 に答える
1

アンドロイドとは関係ありません。Java 構文について混乱しているようです。" " は型 " " のfinal Button okButtonオブジェクト " " の宣言です。オブジェクト参照は " " と宣言されているため、再度割り当てることはできません。okButtonButtonfinal

于 2012-10-04T10:49:23.877 に答える
0

Button okButtonボタンオブジェクト名okButtonを作成し、 xmlで作成したボタンタイプオブジェクトによってインスタンス化し、一意のID名okButtonを付けたことを意味します。

別の方法は

Button okButton = new Button(this);

実際には、それらの間に違いはなく、動的に作成し、xml に触れずにそれらを追加/削除できます。

于 2012-10-04T11:03:59.040 に答える