【问题标题】:Handle back pressed to not dismiss activity手柄后按不关闭活动
【发布时间】:2018-04-12 12:26:52
【问题描述】:

我想像 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");

}

【问题讨论】:

  • 请发布您的代码。
  • 在此处粘贴您的代码
  • 该视图是针对片段还是活动完成的?
  • 关闭键盘是 Android 的默认行为,因此,要调查错误,我们需要查看您的代码
  • @Robert 在活动中

标签: android android-activity onbackpressed


【解决方案1】:

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

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

【讨论】:

  • 我删除了super.onBackPressed();,但问题仍然是我们按回以关闭键盘,然后再次按回,这里 UI 发生了变化。我想要在回按键盘时关闭, Ui 应该在这里处理
  • 我添加了 if 语句并处理了它。@Omar 非常感谢您的回答。
【解决方案2】:

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多