为什么if else语句的双方都被执行,以及如何修复它?

Ash*_*thi 3 android if-statement keyevent

我有一段代码:

passwordEditText.setOnKeyListener(new OnKeyListener() 
    {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) 
        {
            if (keyCode == KeyEvent.KEYCODE_ENTER)
            {
                launch.performClick();
                return true;

            }
            else
            {
                return false;
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

我想要的是当按下回车键时它执行登录命令(启动是执行登录的按钮).但是,在执行true块之后,它继续执行else块,返回false并导致(仅在某些设备上)登录第二次.

所以我的问题分为两部分:if else语句如何评估为true和false,以及如何实现它以便它不会这样做.我已经想到了一些技巧来实现这一点,但这似乎是一个更好理解然后快速修补的问题.

JPM*_*JPM 9

你看到的是OnKey被激活两次,第一次按下键,第二次按键,所以你必须用它过滤它

    if (event.getAction()!=KeyEvent.ACTION_DOWN) {
        return true;
    }

    switch (keyCode) {
       case KeyEvent.KEYCODE_1 : 
            //do something
            break;
       case KeyEvent.KEYCODE_2 : 
            //do something
            break;
       case KeyEvent.KEYCODE_3 : 
            //do something
            break;
    }

    return true;
Run Code Online (Sandbox Code Playgroud)