【问题标题】:Event when user select back?用户选择返回时的事件?
【发布时间】:2011-08-05 12:44:59
【问题描述】:

当用户在 EditText 上输入文本后,选择 Back 并且键盘消失时,我如何捕捉该事件?

【问题讨论】:

  • 你能不能说清楚一点,是要在软键盘被隐藏后处理后按事件还是edittext on focus。
  • 听起来你并不真正关心后退按钮,而是关心软键盘是否可见,在这种情况下,我建议你查看stackoverflow.com/questions/2150078/…

标签: android events keyboard android-edittext


【解决方案1】:

在您的 Activity 类中覆盖 onBackPressed:

    @Override
    public void onBackPressed() {
        //If keyboard is on, do what you want
        super.onBackPressed();
    }

【讨论】:

  • 该方法只有在我按两次返回按钮后才会被调用
  • 好的,在这种情况下覆盖 onKeyDown(keyCode, event) 并在 keyCode == KeyEvent.KEYCODE_BACK 时继续
  • 就像我之前伤心的一样,用户在 Edittext 中完成输入文本后,他按下回键并且键盘消失但没有调用该方法...当按下按钮回退键时第二次调用它
  • 抱歉我的及时回答。似乎当 SoftKey 打开时,它会在 Activity 处理它之前捕获 keyBack 事件。感谢您提出有趣的问题。
  • 所以..这意味着我无法改变这一点?
【解决方案2】:

如果您想在用户在 EditText 中完成输入文本并按下返回键时捕捉返回键,那么您应该使用:

EditText edit = (EditText)findViewById(R.id.yourId);
    edit.setOnKeyListener(new EditText.OnKeyListener(){
                public boolean onKey(View v, int keyCode, KeyEvent event) {
                    if(keyCode == KeyEvent.KEYCODE_BACK){
                    System.out.println("******back key caught in edit.setOnKeyListener");
                }
                    return false;
                }

            });

【讨论】:

  • 它不起作用...我正在尝试这样做,但在 DDMS 中似乎什么也没有
  • 我已经对其进行了测试,并且可以正常工作。你应该调试一下,看看你是否在那里接到电话....
【解决方案3】:

我遇到了同样的问题。 Vineet Shukla 的回答不起作用,直到我确定委托是 EditText.OnKeyListener。在此之前它是一个 View.OnKeyListener 并且我没有看到 KeyEvent.KEYCODE_BACK == keyCode,因为我什至看到过 onKey 曾经被调用过。我希望这对遇到类似问题的人有所帮助,尽管这篇文章已经有一年了。干杯。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-24
    • 1970-01-01
    • 1970-01-01
    • 2011-06-06
    • 2020-11-25
    • 1970-01-01
    • 2021-09-15
    • 1970-01-01
    相关资源
    最近更新 更多