0

Android の例を見ると、次のコードが表示されました。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    EditText editNumber;
    Button btnCall = (Button) this.findViewById( R.id.btnCall);

    editNumber = (EditText) this.findViewById(R.id.editNumber);
    btnCall.setOnClickListener(
            new OnClickListener() {

                public void onClick(View v) {
                    call();
                }
            });
    // ...
}

ここ:

new OnClickListener() {
    public void onClick(View v) {
        call();
    }
}

にパラメータとして渡されsetOnClickListener()ます。私が理解していないのは、内部のコード{...}がここで何をしているのかです? コンストラクターを呼び出し、コンストラクターがオブジェクトを返す場合new OnClickListener()、はい、オブジェクトをパラメーターとしてメソッドに渡すことができますが、それは次のとおりです。

{
    public void onClick(View v) {
        call();
    }
}

ここで行って?メソッド定義のように見えますか?

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

4

1 に答える 1

0

@Perception が言ったように、これは匿名の内部クラスです。btnCall.setOnClickListenter()型の引数が必要OnClickListenerです。an への具体的な参照をインスタンス化してOnClickListenerそれを引数として渡すこともできますが、それを二度と参照しない場合は、単純に匿名の内部クラスを作成する方が簡単な場合があります。

于 2013-02-19T01:47:57.817 に答える