处理后退以不解除活动

时间:2018-04-12 12:26:52

标签: android android-activity onbackpressed

我想像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 个答案:

答案 0 :(得分:2)

由于你还没有提供任何代码,我还无法发表评论,我会假设你让onBackPressed执行默认操作,这意味着你的onBackPressed()方法中super.onBackPressed(); 1}},删除该行应解决问题

修改 由于您已使用代码更新了您的问题,因此无法在视觉上看到super.onBackPressed()之后写的任何内容,因为super.onBackPressed()会返回到上一个活动。删除super.onBackPressed(),然后使用和if else语句处理第二次背压

答案 1 :(得分:0)

如果它处于活动状态,则onBackPressed()函数执行以下操作,

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