代码之家  ›  专栏  ›  技术社区  ›  Neha

按下Handle back可不解除活动

  •  1
  • Neha  · 技术社区  · 6 年前

    我想像whatsapp一样处理回按,当用户回按时,键盘将被解除,如果用户再次回按,我们将转到聊天选项卡。在我的活动中,我希望当用户在键入键盘时按回键时,键盘会自动关闭,并且一些UI元素会得到处理。我尝试在onBackPressed()方法中处理这个问题,但它不起作用,活动被终止。

         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");
    
    }
    
    2 回复  |  直到 6 年前
        1
  •  2
  •   Omar Hezi    6 年前

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

    编辑 既然你已经用代码更新了你的问题,那么在super之后写什么都可以。onBackPressed()将无法在视觉上看到,因为 super.onBackPressed() 返回到上一个活动。去除 超级的onBackPressed() ,并使用和if else语句处理第二次背压

        2
  •  0
  •   Subin Babu    6 年前

    如果是活动,onBackPressed()函数执行以下操作,

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