我只是很好奇为什么记录事件时onEditActionListener会显示两个KeyEvent。

    pageNumET.setOnEditorActionListener(new TextView.OnEditorActionListener(){
        @Override
        public boolean onEditorAction(TextView t, int actionId, KeyEvent event){
            if(!(event == null)){
                Log.e("ACTIONID", actionId+"");
                Log.e("ACTIONEVENT", event+"");
                if(event.getAction() == KeyEvent.ACTION_DOWN){
                    infoText.setText("IT WORKED");

                    return true;
                }
            }

            return false;
        }
    }
);


那是代码,它可以正常工作。
然后,当我在模拟器中按Go时。

记录如下:

E/ACTIONID: 66
E/ACTIONEVENT: null
E/ACTIONID: 0
E/ACTIONEVENT: KeyEvent { action=ACTION_DOWN, keyCode=KEYCODE_ENTER, scanCode=0, metaState=0, flags=0x16, repeatCount=0, eventTime=427524, downTime=427524, deviceId=-1, source=0x0 }


我不知道为什么还有第二件事。

最佳答案

如果只想要一个事件,则应使用keyup。请参见this

08-16 16:29