Java Android OnClick侦听器机制

Java Android OnClick侦听器机制,java,android,Java,Android,我是Android和java的初学者。我不能理解我代码的这一部分。可能是为了创建一个匿名对象。我无法理解此代码的机制。请帮助我 btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub } }); 您在前面的示例中看到的最简单的事件模型非常强大和灵活。任意数

我是Android和java的初学者。我不能理解我代码的这一部分。可能是为了创建一个匿名对象。我无法理解此代码的机制。请帮助我

btn.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub

    }
}); 

您在前面的示例中看到的最简单的事件模型非常强大和灵活。任意数量的事件侦听器对象都可以从任意数量的事件源对象侦听所有类型的事件。例如,程序可能会为每个事件源创建一个侦听器。或者,一个程序可能有一个侦听器,用于所有源的所有事件。一个程序甚至可以为来自单个事件源的单个事件类型拥有多个侦听器

Java有三种事件列表机制

1。通过匿名分类

Android开发人员通常使用匿名内部类来定义专门的侦听器,当事件发生时,这些侦听器为特定行为注册回调。例如,要侦听视图控件上的单击,开发人员必须调用setOnClickListener()方法,该方法接受一个参数:View.OnClickListener对象。 开发人员通常使用匿名内部类技术来创建、定义和使用其自定义View.OnClickListener,如下所示:

Button aButton = (Button) findViewById(R.id.MyButton);
aButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                // User clicked my button, do something here!
            }
});
2。onclick侦听器的单独类。

    class MyActivity extends Activity {

    public void myMethod() {
       MyClickHandler handler = new MyClickHandler();
        Button[] buttons = getAllOneHundredButtonsAsArray();
        for (Button button : buttons) {
            button.setOnClickListener(handler);
        }
    }

    class MyClickHandler implements View.OnClickListener {
        public void onClick(View v) {
            showToast(((Button) v).getText());
        }
    }
}
在上面的代码中,btn是Button类的对象。首先,您必须声明button的对象,然后初始化它。 有关示例的更多详细信息,请访问此链接
您也可以这样写:

public class MainActivity extends ActionBarActivity implements onClickListener{
    Button b,b1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        b = (Button)findViewById(R.id.btn);
        b1 = (Button)findViewById(R.id.btn);
        b.setOnClickListener(this);
        b1.setOnClickListener(this);
    }

    @Override
    public void onClick(View arg0) {
        if(arg0.getId() == R.id.btn)
        {
            /*do some work on the button click*/
        }
        else if(arg0.getId() == R.id.btn)
        {
            /*do some work on the button-1 click*/
        }
    }
}
public class MainActivity extends ActionBarActivity implements onClickListener{
    Button b,b1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        b = (Button)findViewById(R.id.btn);
        b1 = (Button)findViewById(R.id.btn);
        b.setOnClickListener(this);
        b1.setOnClickListener(this);
    }

    @Override
    public void onClick(View arg0) {
        if(arg0.getId() == R.id.btn)
        {
            /*do some work on the button click*/
        }
        else if(arg0.getId() == R.id.btn)
        {
            /*do some work on the button-1 click*/
        }
    }
}