setOnClickListener(new OnClickListener(){})

Ang*_*gus 8 java android

package android.example;

import android.app.Activity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class Android_eg1 extends Activity {
    Button bt; 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        bt=(Button)findViewById(R.id.click);
        bt.setOnClickListener(new OnClickListener(){
            public void onClick(View v) {
            // TODO Auto-generated method stub
                Toast.makeText(getApplicationContext(), "You made a mess", Toast.LENGTH_LONG).show();
            }

        });
      } //onCreate()

}//class
Run Code Online (Sandbox Code Playgroud)

我是java的新手,我知道核心java的基础知识.这是我尝试通过按钮类了解事件处理的示例程序.我无法理解这一部分:

"bt.setOnClickListener(new OnClickListener(){
        public void onClick(View v) {
        // TODO Auto-generated method stub
            Toast.makeText(getApplicationContext(), "You made a mess", Toast.LENGTH_LONG).show();
        }

    });"
Run Code Online (Sandbox Code Playgroud)

在setOnClickListener(参数)中,为什么它们给出一个函数定义?(public void onClick(View v)})

这可以接受吗?

小智 6

在java中,这是一个实现接口的Generated Class.您可以在函数参数内动态生成类,也可以创建外部类并传递此类的实例,或者通过您的activty实现侦听器所需的接口,并将您的活动作为侦听器传递.