按下手柄以不关闭 activity

Handle back pressed to not dismiss activity

我想像 whatsapp 一样处理后退键,如果用户按下键,键盘会在打字时消失,如果用户再次按下键,我们会去聊天 tab.In 我的 activity 我想要那个当用户在键入键盘时按下回退键时,一些 UI 元素 handled.I 尝试在 onBackPressed() 方法中处理它,但它不起作用并且 activity 被杀死。

     edittext.setOnEditorActionListener (
                    new EditText.OnEditorActionListener () {
                        @Override
                        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                            if (actionId == EditorInfo.IME_ACTION_SEARCH ||
                                    actionId == EditorInfo.IME_ACTION_DONE ||
                                    event != null &&
                                            event.getAction () == KeyEvent.ACTION_DOWN &&
                                            event.getKeyCode () == KeyEvent.KEYCODE_ENTER) {
                                if (event == null || !event.isShiftPressed ()) {
                                    // the user is done typing.

                                    View view1 = getCurrentFocus ();
                                    imm.hideSoftInputFromWindow (view1.getWindowToken (), 0);

                                    Log.e (TAG, "TYPING DONE ");
                                    result = tv_result.getText ().toString();

                                    return true; // consume.
                                }
                            }
                            return false; // pass on to other listeners.
                        }
                    }
            );

onBackPressed() 代码

     @Override
    public void onBackPressed() {

    tv_result.setText("Some text");

}

如果开启 activity,onBackPressed() 函数执行以下操作,

// hide virtual keyboard
            InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(m_txtSearchText.getWindowToken(), 
                                      InputMethodManager.RESULT_UNCHANGED_SHOWN);

由于您没有提供任何代码,而且我还不能发表评论,我假设您让 onBackPressed 执行默认情况下的操作,这意味着在您的 onBackPressed() 方法中您有super.onBackPressed();,删除该行应该可以解决问题

编辑 由于您已经使用代码更新了您的问题,因此在 super.onBackPressed() 之后写的任何内容都不会在视觉上看到,因为 super.onBackPressed() 返回到之前的 activity。删除 super.onBackPressed(),并使用 if else 语句

处理第二次后退