1

次のコードでは、クラス「Test」はアクティビティを拡張し、OnClickListener を実装しています。

ただし、「this」はクラス「Test」のインスタンスを参照します。クラス "Test" に新しいオブジェクトを作成する "new" はありません。では、Test クラスのインスタンスはいつどこで作成されたのでしょうか。

public class Test extends Activity implements OnClickListener {

Button playButton;

@Override

public void onCreate(Bundle savedInstanceState) {

     super.onCreate(savedInstanceState);

     setContentView(R.layout.main);

     playButton = (Button) this.findViewById(R.id.Button01);

     playButton.setOnClickListener(this);
}

助けてくれてありがとう。

4

2 に答える 2

1

では、Test クラスのインスタンスはいつどこで作成されたのでしょうか。

public void onCreate(Bundle savedInstanceState)メインアクティビティ以降のメソッドの呼び出し時(あなたの場合)

より明確にするために、コードを少し変更しましょう。

public void onCreate(Bundle savedInstanceState) {

     super.onCreate(savedInstanceState);

     setContentView(R.layout.main);

     playButton = (Button) this.findViewById(R.id.Button01);

      OnClickListener clickListener = this; // take current instance

     playButton.setOnClickListener(clickListener);
}

インスタンスを渡してイベントをリッスンすることで、Activity をリスナーに登録します。ただし、すべてのメソッドが表示されることを望まないsetOnClickListenerため、インターフェイスのみを提供するように求められます ( OnClickListener)。

于 2013-10-13T07:57:51.383 に答える