【发布时间】:2016-12-07 12:03:59
【问题描述】:
在片段上,我有以下 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 后台堆栈效果很好,但如果用户使用软键盘在 EditText 中输入文本然后隐藏键盘,它就会停止工作。
我知道 OnKeyListener 不适用于软键盘,这可以满足我的需求。我只需要监听器在输入完成并隐藏键盘后继续工作。
有没有办法防止这种情况发生?
一种解决方法是listen for when keyboard is dismissed 并在键盘关闭时再次添加 OnKeyListener,但实现这一点对于简单的任务来说增加了太多的复杂性。
【问题讨论】:
标签: android android-fragments keyboard