[英]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.