隐藏软键盘后,OnKeyListener停止工作

时间:2016-08-02 08:21:29

标签: android android-fragments keyboard

在片段上,我有以下OnKeyListener。如果它当前显示,我用它隐藏该片段的内部视图。如果没有显示,我就不会使用按键和Android。

    getView().setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if ((keyCode == KeyEvent.KEYCODE_BACK) && (event.getAction() == KeyEvent.ACTION_DOWN)) {
                if (isSomeViewShowing) {
                    hideSomeView();
                    return true;
                }
                // Back pressed but view is not showing. Not consuming the event.
                return false;
            }
            // Back not pressed. Not consuming the event.
            return false;
        }
    });

当视图不存在时,它可以隐藏视图并进入正常的Fragment / Activity backstack,但如果用户使用软键盘在EditText中输入文本然后隐藏键盘,它就会停止工作。 / p>

我知道OnKeyListener不适用于软键盘,这对我的需求是可行的。我只需要在输入完成并且隐藏键盘后继续工作。

有没有办法阻止这种情况发生?

解决方法是listen for when keyboard is dismissed并在解除键盘时再次添加OnKeyListener,但实现这一点会为简单任务增加太多复杂性。

1 个答案:

答案 0 :(得分:2)

您可以覆盖使用onBackPressed()的{​​{1}}中的activity,并向fragment发送消息,以便知道按下了按键。像这样:

<强>活动:

fragment

<强>片段:

/**
 * Triggered when the user press back button
*/
@Override
public void onBackPressed(){

    mYourFragment.onBackPressed();

}