繁体   English   中英

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

[英]OnKeyListener stops working after soft keyboard is hidden

在片段上,我有以下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中输入文本然后隐藏键盘,它就会停止工作。

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

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

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

你可以重写onBackPressed()activity ,其使用的fragment ,并将它们发送消息给fragment知道回键被按下。 像这样的东西:

活动:

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

    mYourFragment.onBackPressed();

}

分段:

public void onBackPressed(){

    if (isSomeViewShowing) {
        hideSomeView();
    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM