setOnClickListener匿名类?

时间:2016-09-18 17:23:13

标签: java android

我是Android开发的新手,我意识到在现实世界的例子中使用所有接口比在仅试图向您展示如何使用接口的示例代码中使用它们要困难得多。

由于我想理解我输入的每一行,我将从这开始:

Button clearButton = (Button) findViewById(R.id.buttonClear);

clearButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {   
    }
});

第一行很简单,我只是根据来自xml的id为按钮对象分配一个按钮,但我不明白的听众,只是我得到了clearButton对象,我将使用它的一个方法{{1然后在参数中我传递了一个我要覆盖的行为的匿名类,但是setOnClickListener方法不是一个对象呢?我在函数内写一个类?

View.OnClickListener()

这看起来像是一个包含内联类的函数new View.OnClickListener() { @Override public void onClick(View v) { } 吗?

1 个答案:

答案 0 :(得分:1)

它被称为观察者模式。您将监听器注册到UI并告诉它在发生某些事情时调用您的代码;在这种情况下,用户点击清除按钮即可。

SO:

这很简单,您正在创建一个按钮对象并将其附加到您的布局文件中。

Button clearButton = (Button) findViewById(R.id.buttonClear);

下一步:

让我改写一下:

clearButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {   
        }
    });

到此:

//First let's create an implementation of this interface.
// These are also refereed to as callback interfaces as 
//the methods in their implementation are called as whenever 
//something happens on the UI. In this call onClick is the callback    method.


private class MyButtonClicklistener implements View.OnClickListener
{
  @Override
            public void onClick(View v)
 {
//Do something on the button click   
            }

}

创建监听器的实例

MyButtonClickListener mListener = new MyButtonClickListener();

最后注册你的听众。现在,当有人点击清除按钮时,您告诉UI调用mListener对象的onClick方法。

clearButton.setOnClickListener(mListener);