java - 当我按下一个键时 onKeyUp 没有启动

标签 java android

每次我按下一个键来启动 toast 时,我都会尝试,但似乎没有启动它,知道吗?

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = findViewById(R.id.txtKey);
        editText = findViewById(R.id.etxtKeyboard);
    }

    @Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        switch (keyCode) {
            case KeyEvent.KEYCODE_P:
                Toast.makeText(this, "P pressed", Toast.LENGTH_SHORT).show();
                return true;
            default:
                return super.onKeyUp(keyCode, event);
        }
    }

最佳答案

正如 Android 文档中关于 Activity.onKeyUp() 方法的描述:

Called when a key was released and not handled by any of the views inside of the activity. So, for example, key presses while the cursor is inside a TextView will not trigger the event (unless it is a navigation to another object) because TextView handles its own key presses.

因此,当焦点位于 findViewById(R.id.etxtKeyboard); 编辑 TextView 时,您似乎正在 try catch onKeyUp() 事件。

您可以尝试在Activity.onCreate()中添加这样的代码:

editText.setOnKeyListener(
        new View.OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                switch (keyCode) {
                    case KeyEvent.KEYCODE_P:
                        Toast.makeText(MyActivity.this, "P pressed", Toast.LENGTH_SHORT).show();
                        return true;
                    default:
                        return false;
                }
            }
        }
);

关于java - 当我按下一个键时 onKeyUp 没有启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52838963/

相关文章:

android - 将 Android 应用程序从免费/付费模式转换为应用内付费解锁

android - 谷歌分析 fragment 屏幕浏览量

java - 我想从 jdbctemplate 调用存储过程并需要在存储过程中生成的 pk

java - 如何在 Spring MVC 2.5 中将 setCommandClass() 与 MultiActionController 一起使用

java - 为什么@Repeatable注解不能继承接口(interface)

java - 如何将参数值发送到服务器并使用 AsyncTask 获取数据(通过 POST 请求)?

Java:如何将 OutputStream 上的文本格式化为用户控制台的宽度?

java - 无法在 Volley 中模仿 POSTMAN 请求

android - 将数据从android应用程序发送到服务器

javascript - null 不是一个对象(评估 'this.state.noteArray' ) - React Native