android - 为什么 if else 语句的两边都被执行了,如何解决?

标签 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;
            }
        }
    });

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

所以我的问题分为两部分:if else 语句如何评估为真和假,以及我如何才能让它不那样做。我想到了一些技巧来实现这一点,但这似乎是一个更好理解然后迅速修补的问题。

最佳答案

你看到的是 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;

关于android - 为什么 if else 语句的两边都被执行了,如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7366287/

相关文章:

Android,帮助旋转触摸图像

android - 我可以使用 GoogleSignInApi 和 SMTP 服务器(如果可能)或以其他方式发送没有密码的电子邮件吗?

bash - shell脚本变量值

java - 在 while 语句内使用嵌套的 if 和 else if 语句

java - 如何使 Swing JTextArea 响应 KeyEvents?

android - 如何在显示菜单时拦截按键事件

android - 警报管理器无法通知

java - 签名 View 不适用于 Android 8 + 设备

arrays - 根据另一个数组上的条件构建数组

java - 在 Java 中使用箭头键移动图像