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 方法。
最佳答案
您的问题似乎是您不太了解匿名类。
首先,setOnKeyListener
接受一个OnKeyListener
对象。您可以创建一个实现此接口(interface)的新类,然后实例化它:
class MyKeyListener implements OnKeyListener {
@Override
public boolean onKey (View v, int keyCode, KeyEvent event) {
// ...
}
}
// On your other method:
myEditText.setOnKeyListener(new MyKeyListener());
我希望这很清楚,因为这几乎就是您在 Java 中所做的一切。
但是,Java 允许您通过定义匿名类 来避免定义另一个类。为此,您只需在所需的基类或接口(interface) (OnKeyListener
) 上执行 new
,然后添加一个 class body,就好像你在定义它:
myEditText.setOnKeyListener(new OnKeyListener(){
@Override
public boolean onKey (View v, int keyCode, KeyEvent event) {
// ...
}
});
最后一段代码就是您所拥有的。
关于android - setOnKeyListener 在此代码中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19966347/