setOnKeyListener如何在此代码中工作?

时间:2013-11-13 23:08:49

标签: android

myEditText.setOnKeyListener(new OnKeyListener(){
            public boolean onKey(View v, int keyCode, KeyEvent event){
                if (event.getAction() == KeyEvent.ACTION_DOWN)
                    if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER){
                        todoItems.add(0,myEditText.getText().toString());
                        aa.notifyDataSetChanged();
                        myEditText.setText("");
                        return true;
                    }
                        return false;

                }

请允许有人为我打破这段代码,我无法绕过setOnKeyListener方法。

1 个答案:

答案 0 :(得分:3)

您的问题似乎是您不太了解匿名课程。

首先,setOnKeyListener接受OnKeyListener个对象。您可以创建一个实现此接口的新类,然后实例化它:

class MyKeyListener implements OnKeyListener {
    @Override
    public boolean onKey (View v, int keyCode, KeyEvent event) {
        // ...
    }
}

// On your other method:
myEditText.setOnKeyListener(new MyKeyListener());

我希望这很清楚,因为这几乎是你在Java中所做的一切。

但是,Java允许您通过定义匿名类来避免定义另一个类。为此,您只需对所需的基类或接口执行newOnKeyListener),然后添加类主体,就像您定义它一样:< / p>

myEditText.setOnKeyListener(new OnKeyListener(){
    @Override
    public boolean onKey (View v, int keyCode, KeyEvent event) {
        // ...
    }
});

最后一段代码就是你所拥有的。